Django 實現跨域請求

2022-05-11 17:20:59 字數 2634 閱讀 5411

目錄

補充:

from django.utils.safestring import mark_safe  # 安全的字串

))

cors 即 cross origin resource sharing 跨域資源共享.

跨域請求分兩種:簡單請求、複雜請求.

簡單請求

簡單請求必須滿足下述條件.

http方法為這三種方法之一:headgetpost·http頭訊息不超出以下字段:

acceptaccept-languagecontent-languagelast-event-id

瀏覽器的同源策略·無法跨域就是被瀏覽器的同源策略限制的.

也就是說,瀏覽器會阻止非同源的請求.

·那什麼是非同源呢?網域名稱或埠不同的,都屬於非同源.

·瀏覽器只會阻止表單以及ajax請求的跨域,但不會阻止src請求跨域.

所以,我們的cdn、等src請求都是正常的.

jsonp跨域的原理是利用了瀏覽器不阻止src請求跨域來實現的.

jsonp只能實現get請求跨域.

首先 準備我們的視**件

# 注意返回的函式以及引數的格式

然後 html檔案

好了 我們來測試吧

可以看到,我們成功實現了跨域獲取資料.

jsonp解決跨域只能傳送get請求,並且實現起來前後端互動會比較多,現在幾乎已經不在使用了.

可實現簡單請求和複雜請求的跨域

第一步 準備中介軟體

from django.utils.deprecation import middlewaremixin

class mycors(middlewaremixin):

def process_response(self, request, response):

# 如下,等於'*'後,便可允許所有簡單請求的跨域訪問

response['access-control-allow-origin'] = '*'

# 判斷是否為複雜請求

if request.method == 'options':

response['access-control-allow-methods'] = '*'

response['access-control-allow-headers'] = 'x-requested-with,content-type'

return response

寫好之後,別忘記了去註冊.

第二步 視**件

return httpresponse("這是get請求的資料")

def post(self, request):

return httpresponse("這是post請求的資料")

def put(self, request):

return httpresponse("這是put請求的數")

第三步 html檔案

點選傳送跨站請求

測試效果如下

可見,我們實現了複雜請求的跨域,簡單請求就更不用說了.

好了,就到這裡吧.

Django 實現跨域請求

目錄 cors 即 cross origin resource sharing 跨域資源共享.跨域請求分兩種 簡單請求 複雜請求.簡單請求 簡單請求必須滿足下述條件.http方法為這三種方法之一 head get post http頭訊息不超出以下字段 accept accept language ...

django跨域請求

在介面函式中配置 安裝cors pip install django cors headers corsheaders 新增中介軟體 middleware or middleware classes on django 1.10 corsheaders.middleware.corsmiddlewa...

Django跨域請求CSRF

web跨域請求 1.為什麼要有跨域限制 舉個例子 1.使用者登入了自己的銀行頁面 向使用者的cookie中新增使用者標識。2.使用者瀏覽了惡意頁面 執行了頁面中的惡意ajax請求 3.向發起ajax http請求,請求會預設把對應cookie也同時傳送過去。4.銀行頁面從傳送的cookie中提取使用...