django跨域請求

2021-08-28 13:24:43 字數 2727 閱讀 9193

在介面函式中配置

安裝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...