溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python學(xué)習(xí)教程:Python的cors跨域模塊主要做了什么?

發(fā)布時(shí)間:2020-08-16 20:43:44 來源:ITPUB博客 閱讀:272 作者:千鋒Python唐小強(qiáng) 欄目:編程語言

在當(dāng)下web開發(fā)環(huán)境下,前后端分離開發(fā)是一個(gè)比較主流的架構(gòu)模式。那么因?yàn)椴辉偈悄0寤_發(fā),以至于前后端有可能不在一個(gè)域下(即服務(wù)器的域名是www.a.com, 客戶端域名是 www.b.com),這就造成了 瀏覽器跨域禁止的問題。

Python學(xué)習(xí)教程:Python的cors跨域模塊主要做了什么?

實(shí)際上對于前端也有很多的跨域的解決方案。那么其中一種當(dāng)下也比較主流的方式是在后端開啟cors。在我們python 的 web框架中, django,flask,tornado 都有各自的cors的庫來處理跨域的問題。但這些cors具體做了什么呢?我們今天的 Python學(xué)習(xí)教程就來跟大家剖析一下

Python學(xué)習(xí)教程:Python的cors跨域模塊主要做了什么?

就像我們知道的,在一次http請求中包含有headers頭信息,大家都是了解的,那么在瀏覽器首次通過options進(jìn)行訪問的會(huì)后,會(huì)由瀏覽器返回一些header信息來判斷是否允許訪問,那么在后端setheader的時(shí)候添加了一些允許信息,那么他們分別都是什么呢?我們今天給大家介紹最主要的一些鍵值對:

'Access-Control-Allow-Origin:*' 該key是代表允許訪問的域名,當(dāng)前demo的value是 * 代表允許所有域名訪問,這必然是一個(gè)不安全的,但在開發(fā)測試階段可以這樣配置,生產(chǎn)環(huán)境要格外注意

'Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE' 我們知道 http請求 基于restful 有一些方法 那么這里就是允許訪問的方法,例如上邊的post get options delete 等,如果我們?nèi)サ?get,那么將無法通過get方法訪問該服務(wù)

'Access-Control-Allow-Headers:x-requested-with,content-type' 在options預(yù)處理的時(shí)候,如果服務(wù)器返回了這個(gè)響應(yīng)頭的信息,則會(huì)允許請求

‘Access-Control-Allow-Credentials: true’ 當(dāng)設(shè)置了該key后 才能允許 cookie被傳過去,否則是傳不過去的。這里也是要注意的。


我們以tornado為例,在setdefaulthaders方法定義一下內(nèi)容,既可以實(shí)現(xiàn)不需要額外安裝cors庫,也可以正??缬颍?/p>

上邊這個(gè)例子是一個(gè)簡單的demo,大家可以根據(jù)自己的業(yè)務(wù)需求再去做額外的調(diào)整。本書記也總之在于對這些header的一些了解。如果有不清楚的地方,大家也可以自行百度google,可以得到更加清晰精準(zhǔn)的解釋。

以上就是基于服務(wù)器端 對請求headers里添加的允許訪問的限制參數(shù),通過將response總進(jìn)行setheaders,瀏覽器就知道本次請求是否允許訪問。我介紹的這些也是比較常見或者說最為核心的一些跨域允許訪問的鍵值對。希望對大家有所幫助。下期的 Python學(xué)習(xí)教程,伙伴們可以期待一下!有不清楚的地方可以留言!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI