django 跨域

二月雪發表於2024-08-09

1、安裝依賴庫django-cors-headers

pip install django-cors-headers

2、setting設定(支援所有的IP進行跨域)
修改Django專案資料夾下的 setting.py 檔案

# django_project/setting.py

# 修改允許訪問的IP
ALLOWED_HOSTS = ['*'] # 允許全部IP訪問專案


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders', # 註冊跨域app corsheaders
    'app01',# 你的app
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware', # 加入中間鍵 位置必須在這裡 不能在其他位置
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware', 如果你的專案沒有考慮到 csrf 網路攻擊,可註釋掉,否則會報錯沒有傳遞 csrf cookie
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


# 在 setting.py 末尾新增以下設定
CORS_ALLOW_CREDENTIALS = True  # 允許攜帶cookie
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_HEADERS = ('*')

3、設定跨域白名單

# CORS跨域請求白名單設定
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:8080',
    'http://localhost:8080',
    'http://192.168.3.10:8080'  # 前端的ip
    'http://www.mysite.site:8080',
)
CORS_ALLOW_CREDENTIALS = True  # 允許攜帶cookie

相關文章