欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django跨域資源共享問題(推薦)

 更新時間:2020年03月09日 10:21:12   作者:黑里俏  
跨域資源共享(CORS) 是一種機制,它使用額外的 HTTP 頭來告訴瀏覽器 讓運行在一個 origin (domain) 上的Web應用被準許訪問來自不同源服務器上的指定的資源。這篇文章主要介紹了Django跨域資源共享問題小結,需要的朋友可以參考下

最近做了一個前后端分離的web項目,其中我司職后端,使用django框架。在前后端集成測試的時候,就遇到了一些web安全相關的問題,cors跨域資源共享就是其中之一。

cors問題介紹

跨域資源共享(CORS) 是一種機制,它使用額外的 HTTP 頭來告訴瀏覽器 讓運行在一個 origin (domain) 上的Web應用被準許訪問來自不同源服務器上的指定的資源。當一個資源從與該資源本身所在的服務器不同的域、協(xié)議或端口請求一個資源時,資源會發(fā)起一個跨域 HTTP 請求。 CORS機制允許 Web 應用服務器進行跨域訪問控制,從而使跨域數(shù)據(jù)傳輸?shù)靡园踩M行?,F(xiàn)代瀏覽器支持在API容器中使用CORS,以降低跨域 HTTP 請求所帶來的風險。

一個域是由協(xié)議、主機和端口號組成的,簡單地說,當兩個url的協(xié)議、主機和端口中存在一個不同時,它們屬于不同域,那么它們之間的互相訪問就會產生跨域訪問問題。

我的項目中,前端的地址是 http://localhost:8001 ,后端的地址是 http://localhost:8000 ,兩個地址的協(xié)議和主機都相同,但是端口號不同,因此,前端調用后端接口時,就會產生跨域訪問的問題。

簡單請求

簡單請求不會觸發(fā)跨域訪問中的預檢請求,滿足下列條件的為簡單請求:

使用下列方法之一

GET
HEAD
POST

headers字段集合主要包含以下類型:

  • Accept
  • Accept-Language
  • Content-Language
  • Content-type : text/plain 、 multipart/form-data 和 application/x-www-form-urlencoded
  • DRP
  • DownLink
  • Save-Data
  • Viewport-Width
  • Width

非簡單請求

非簡單請求即不滿足簡單請求條件的請求。非簡單請求在發(fā)出請求前需要先發(fā)送一個預檢請求,請求方法為 OPTIONS 方法。預檢請求的使用,可以避免跨域請求對服務器的用戶數(shù)據(jù)產生未預期的影響。 當請求滿足下述任一條件時,即應首先發(fā)送預檢請求:

使用了以下的HTTP方法:

PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH

首部字段里面包含了非簡單請求的頭部字段的字段

django中遇到的問題

在后臺開發(fā)中,就遇到了這樣的情況

錯誤提示中顯示,請求被 CORS 協(xié)議阻攔。

這里的 Origin 字段說明了請求源地址,采用了 OPTIONS 方法,然后發(fā)出請求的地址 Host
就是本機地址。下面是服務器的響應,但是沒有發(fā)出實際請求

然后,為了解決這一問題,我搜索過后,安裝了django-cors-headers庫,并且進行了配置,這里配置時我把django-cors-headers中間件放在了中間件第一位。再次訪問同樣的地址,結果如下:

1.首先,瀏覽器檢測訪問的請求頭中的字段,存在對 CORS 安全的首部字段集合之外的字段,所以,向服務器發(fā)送一個預檢請求。上圖可見,方法為 OPTIONS ,該方法不會對服務器資源產生影響。其中的請求頭中的 Access-Control-Request-Method 字段表明實際請求會采用 GET 方法, Origin 表示請求源,會在服務器中接受驗證。

2.驗證通過后,會在 response 請求頭添加不同的字段進行返回, 字段的意思如下:

  • 首部字段 Access-Control-Allow-Headers :表示服務器允許的頭部字段。
  • 首部字段 Access-Control-Allow-Methods :表明服務器允許客戶端使用 POST , GET 和 OPTIONS 等等方法發(fā)起請求。
  • 首部字段 Access-Control-Allow-Origin :表示服務器允許的請求源。
  • 首部字段 Access-Control-Max-Age :表明該響應的有效時間為86400秒,也就是24 小時。在有效時間內,瀏覽器無須為同一請求再次發(fā)起預檢請求。

3.然后,客戶端會發(fā)出實際請求,從結果上來看,預檢請求的 response 請求體中沒有任何信息,而實際請求則攜帶了服務器返回的信息。不難看出,預檢請求確實就是與服務器提前溝通,獲取與服務器相關信息的。

簡單的總結

非簡單請求需要發(fā)送預檢請求進行判斷,然后服務端與客戶端需要在頭部字段上達成一致,這樣才能正常訪問。不過,在django的開發(fā)中,直接使用django-cors-headers庫以后,只需要簡單的配置就能夠很好的解決問題。

到此這篇關于Django跨域資源共享問題小結的文章就介紹到這了,更多相關django跨域資源共享內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python3交互式shell ipython3安裝及使用詳解

    Python3交互式shell ipython3安裝及使用詳解

    這篇文章主要介紹了Python3交互式shell ipython3安裝及使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • OpenCV+Python識別車牌和字符分割的實現(xiàn)

    OpenCV+Python識別車牌和字符分割的實現(xiàn)

    這篇文章主要介紹了OpenCV+Python識別車牌和字符分割的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python自定義函數(shù)實現(xiàn)求兩個數(shù)最大公約數(shù)、最小公倍數(shù)示例

    Python自定義函數(shù)實現(xiàn)求兩個數(shù)最大公約數(shù)、最小公倍數(shù)示例

    這篇文章主要介紹了Python自定義函數(shù)實現(xiàn)求兩個數(shù)最大公約數(shù)、最小公倍數(shù),結合實例形式分析了Python求解兩個數(shù)最大公約數(shù)與最小公倍數(shù)相關原理與算法實現(xiàn)技巧,需要的朋友可以參考下
    2018-05-05
  • Django框架中的對象列表視圖使用示例

    Django框架中的對象列表視圖使用示例

    這篇文章主要介紹了Django框架中的對象列表視圖使用示例,Django是重多Python人氣web框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • Python如何將模塊打包并發(fā)布

    Python如何將模塊打包并發(fā)布

    這篇文章主要介紹了Python如何將模塊打包并發(fā)布,幫助大家分享自己的模塊,感興趣的朋友可以了解下
    2020-08-08
  • 一文帶你探索Python中的eventlet通信機制

    一文帶你探索Python中的eventlet通信機制

    這篇文章主要為大家詳細介紹了Python中的eventlet通信機制的相關知識,文中的示例代碼講解詳細,對我們深入了解Python有一定幫助,需要的可以參考一下
    2023-06-06
  • Python openpyxl庫處理Excel文件高級應用技巧實例

    Python openpyxl庫處理Excel文件高級應用技巧實例

    openpyxl是一個用于處理Excel文件的Python庫,它提供了豐富的功能,使得用戶能夠輕松地讀取、寫入和操作Excel文件,而不需要依賴于Microsoft Excel軟件,作為一個開源項目,openpyxl在Python生態(tài)系統(tǒng)中得到了廣泛的應用,成為處理Excel數(shù)據(jù)的首選工具之一
    2024-01-01
  • Python正則抓取新聞標題和鏈接的方法示例

    Python正則抓取新聞標題和鏈接的方法示例

    這篇文章主要介紹了Python正則抓取新聞標題和鏈接的方法,結合具體實例形式分析了Python正則匹配頁面元素及文件寫入相關操作技巧,需要的朋友可以參考下
    2017-04-04
  • Flask-Docs自動生成Api文檔安裝使用教程

    Flask-Docs自動生成Api文檔安裝使用教程

    這篇文章主要為大家介紹了Flask-Docs自動生成Api文檔安裝使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 200 行python 代碼實現(xiàn) 2048 游戲

    200 行python 代碼實現(xiàn) 2048 游戲

    2048這個小游戲大家都不陌生,應該都玩過,之前已經在網(wǎng)上見過各個版本的2048實現(xiàn)了,有JAVA、HTML5等,今天我就給大家來一個我200 行python 代碼實現(xiàn)的2048 游戲,感興趣的朋友一起看看吧
    2018-01-01

最新評論