在介面函式中配置
安裝cors
pip install django-cors-headers
...'corsheaders',
... )
新增中介軟體
middleware = [ # or middleware_classes on django < 1.10
...'corsheaders.middleware.corsmiddleware',
'django.middleware.common.commonmiddleware',
...]
配置允許跨站訪問本站
配置允許跨站訪問本站的位址
cors_origin_allow_all = false
cors_origin_whitelist = (
'localhost:63343', )
# 預設值是全部:
#cors_origin_whitelist = () # 或者定義允許的匹配路徑正規表示式.
#cors_origin_regex_whitelist = ('^(https?://)?(\w+.)?>google.com$', ) # 預設值:
#cors_origin_regex_whitelist = ()
設定允許訪問的方法
cors_allow_methods = (
'get',
'post',
'put',
'patch',
'delete',
'options'
)
設定允許的header:
預設值:
cors_allow_headers = (
'x-requested-with',
'content-type',
'accept',
'origin',
'authorization',
'x-csrftoken'
)
ajax獲取token
###前端ajax**
})request.getallresponseheaders()負責取出資料
但是不行啊,原因
1:w3c的 xhr 標準中做了限制,規定客戶端無法獲取 response 中的 set-cookie、set-cookie2這2個字段,無論是同域還是跨域請求;
2:w3c 的 cors 標準對於跨域請求也做了限制,規定對於跨域請求,客戶端允許獲取的response header欄位只限於「****** response header」和「access-control-expose-headers」 ,在「access-control-allow-headers」中加了無效
"****** response header"包括的 header 欄位有:cache-control,content-language,content-type,expires,last-modified,pragma;
「access-control-expose-headers」:首先得注意是"access-control-expose-headers"進行跨域請求時響應頭部中的乙個字段,對於同域請求,響應頭部是沒有這個欄位的。這個欄位中列舉的 header 字段就是伺服器允許暴露給客戶端訪問的字段。
###伺服器端**
resp['token'] = '8888888888888'
resp["access-control-expose-headers"] = "token"
客戶端**
success:function (response,textstatus,xhr) ,
客戶端的token放在header裡發給伺服器
在ajax裡新增headers
headers: ,
伺服器的setting檔案
#加入token
cors_allow_headers=(
'token'
)
Django跨域請求CSRF
web跨域請求 1.為什麼要有跨域限制 舉個例子 1.使用者登入了自己的銀行頁面 向使用者的cookie中新增使用者標識。2.使用者瀏覽了惡意頁面 執行了頁面中的惡意ajax請求 3.向發起ajax http請求,請求會預設把對應cookie也同時傳送過去。4.銀行頁面從傳送的cookie中提取使用...
Django允許跨域請求
解決跨域請求問題可以從前端解決也可以通過配置後台解決,通過配置後台允許跨域可以解決前端的一些麻煩。django通過中介軟體實現允許跨域。命令列輸入 pip install django cors headers在相應位置新增以下 corsheaders middleware classes cors...
django解決跨域請求
網路協議不同,如http協議訪問https協議。埠不同,如80埠訪問8080埠。網域名稱不同,如qianduanblog.com訪問baidu.com。子網域名稱不同,如abc.qianduanblog.com訪問def.qianduanblog.com。網域名稱和網域名稱對應ip,如www.a.c...