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標籤的跨域能力來...