1. 程式人生 > 其它 >django跨域請求問題

django跨域請求問題

在前後端分離開發時,前後端時不同的埠,這就涉及到跨域訪問資料問題,因為瀏覽器的同源策略,預設是不支援兩個不同域名間相互訪問資料,而我們需要在兩個域名間相互傳遞資料,這時我們就要為後端新增跨域訪問的支援。

1. django-cors-headers擴充套件

官方文件:https://github.com/adamchainz/django-cors-headers

2. 安裝

pip install django-cors-headers

3. 新增應用

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

4. 配置中介軟體

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

注意:要在第一行新增

5. 新增白名單

# 跨域請求白名單
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:8080',
    'http://127.0.0.1:8000',
)
CORS_ALLOW_CREDENTIALS = True  # 允許攜帶cookie

  • 凡是出現在白名單中的域名,都可以訪問後端介面
  • CORS_ALLOW_CREDENTIALS 指明在跨域訪問中,後端是否支援對cookie的操作。

6. 跨域實現流程為

1、瀏覽器會第一次先發送options請求詢問後端是否允許跨域,後端查詢白名單中是否有這兩個域名

2、如過域名在白名單中則在響應結果中告知瀏覽器允許跨域

3、瀏覽器第二次傳送post請求,攜帶使用者登入資料到後端,完成登入驗證操作