三、服務端解決跨域請求
上述我們介紹了如何在客戶端解決跨域請求問題,同樣我們可以在服務端進行設定處理,是否還記得在我們不做任何處理的時候,跨域請求時候瀏覽器給我們報的錯誤不?如下,翻譯過來就是因為相應頭沒有指定access-control-allow-origin所允許原始的請求路徑,因此原始請求路徑不被允許訪問。
基於上述的原因解釋,我們只需要在響應的內容加入上述這樣的授權字段,便可解決,例項如下:
專案1客戶端請求**:(路徑為:)
專案2服務端被請求的路徑:如上方式,在服務端相應內容中加入response["access-control-allow-origin"]=""欄位後,路徑就可以跨域請求此路徑下的內容,如果將其設定成response["access-control-allow-origin"]="*"表示所有的客戶端都可以請求此伺服器下此路徑。
上述這種方式雖然在服務端解決了跨域請求的問題,但是通過上述設定方式,顯然不靈活,我們應該訪問路徑的實際情況進行判斷,然後再決定要不要給其跨域返回內容,解決辦法可以將伺服器**改為如下:
可以取得請求路徑的origin
ps:上述講述的都是基於get請求的情況,假如我們在客戶端利用put形式進行請求,因為put請求屬於上傳檔案的請求方式,而http協議對此請求方式未做驗證,即請求便能成功,顯然不合理,所以瀏覽器給給其增加了預檢,即put請求提交時,客戶端實際提交的請求方式為options,只有在服務端對其進行了驗證後,才會繼續提交正真put請求。上述的服務端跨域put形式請求可以改寫為如下:
defsend_ajax(request):
if request.method=="
options
":#預檢
python之路 集合
set集合是無序的,不能通過索引和切片來做一些操作 建立集合 n set hello print n 集合新增 刪除 1 新增 n set hello n.add onion print n 2 刪除 隨機刪除 n.pop 指定刪除 n.remove h 刪除元素不存在會報錯 n.discard m...
python之路 socketserver模組
通過socketserver模組實現套接字併發 基於tcp協議的套接字可以分為兩個階段 鏈結迴圈與通訊迴圈,與之對應的,socketserver模組中有兩個類,server類用於解決鏈結問題,request類用於解決通訊問題 server端 import json import struct imp...
Python學習之路
python 十分鐘入門 python 菜鳥教程 pycharm安裝numpy python 檔案讀取 with open xml path,r as fr content fr.read python讀取檔案時提示 unicodedecodeerror gbk codec can t decode...