django跨域請求問題
阿新 • • 發佈:2021-08-08
在前後端分離開發時,前後端時不同的埠,這就涉及到跨域訪問資料問題,因為瀏覽器的同源策略,預設是不支援兩個不同域名間相互訪問資料,而我們需要在兩個域名間相互傳遞資料,這時我們就要為後端新增跨域訪問的支援。
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請求,攜帶使用者登入資料到後端,完成登入驗證操作