Django 跨域和同源

2021-10-04 21:01:09 字數 2095 閱讀 8836

2023年,同源政策由 netscape 公司引入瀏覽器。目前,所有瀏覽器都實行這個政策。同源策略:最初,它的含義是指,a網頁設定的 cookie,b網頁不能開啟,除非這兩個網頁"同源"。所謂"同源"指的是"三個相同":網域名稱、協議、埠號相同即為同源,同源政策的目的,是為了保證使用者資訊的安全,防止惡意的**竊取資料。

同源策略雖然保證了使用者資訊的安全,但同時也使得實際開發**現一些影響。例如實際開發中,將伺服器端架設到一台伺服器中,把客戶端頁面放到另外乙個單獨的伺服器。那麼這時候就會出現不同源的情況,這就需要使用到跨域 。

# 專案s1

defindex

(request)

: date =

ret = jsonresponse(date)

ret[

'access-control-allow-origin']=

""# 設定響應頭

return ret

>$(

"#bt").

click

(function()

,success

(res)})

})script

>

cors需要瀏覽器和伺服器同時支援。目前,所有瀏覽器都支援該功能,ie瀏覽器不能低於ie10。

整個cors通訊過程,都是瀏覽器自動完成,不需要使用者參與。對於開發者來說,cors通訊與同源的ajax通訊沒有差別,**完全一樣。瀏覽器一旦發現ajax請求跨源,就會自動新增一些附加的頭資訊,有時還會多出一次附加的請求,但使用者不會有感覺。因此,實現cors通訊的關鍵是伺服器。只要伺服器實現了cors介面,就可以跨源通訊。瀏覽器將cors請求分成兩類:簡單請求(****** request)和非簡單請求(not-so-****** request),只要同時滿足以下兩大條件,就屬於簡單請求。反之就屬於非簡單請求(複雜請求)。

條件1:

請求方法是以下三種方法之一

條件2:

http的頭資訊不超出以下幾種字段

複雜請求時,首先會傳送「預檢」請求,如果「預檢」成功,則傳送真實資料。如果複雜請求,則服務端需要設定允許某請求access-control-request-method,否則「預檢」不通過。如果複雜請求設定了請求頭,則服務端需要設定允許某請求頭access-control-request-headers,否則「預檢」不通過

# 返回結果中新增響應頭

''return obj

# 中介軟體中新增響應頭

from django.utils.deprecation import middlewaremixin

class

mycorsmiddle

(middlewaremixin)

:def

process_response

(self, request, response)

:# response['access-control-allow-origin']=''

response[

'access-control-allow-origin']=

'*'if request.method ==

'options'

:# 所有的頭資訊都允許

response[

'access-control-allow-headers']=

'*'return response

同源和跨域

同源機制指的是乙個指令碼不可以請求與它不同域下的資源,非同源的請求就是跨域的請求,其實只要協議 網域名稱 埠有乙個不同,就算跨域。這種機制是為了防止出現盜鏈 乙個站點的網頁引用其它 的諸如的資源。或者將銀行網頁掛到自己的網頁上得到假的網銀賬戶頁面,以此竊取賬戶資訊 iframe 但是有很多情況需要跨...

同源策略和跨域

url由三部分組成 資源型別 存放資源的主機網域名稱 資源檔名。也可認為由4部分組成 協議 主機 埠 路徑 url的一般語法格式為 帶方括號的為可選項 protocol hostname port path parameters query fragment protocol 協議 指定使用的傳輸協...

,同源策略和跨域

當前頁面的url 和目標請求的url不一樣 是瀏覽器的一種安全策略 所謂同源就是同乙個源頭。官方同源 協議 埠號 網域名稱必須完全相同 違背同源策略就是跨域 當前頁面的url 和目標請求的url不一樣 jsonp,jsonp是非官方的跨域解決方案,只支援get請求。它借助script標籤的跨域能力來...