【Python-Django】瀏覽器同源策略


1995年,同源政策由 Netscape 公司引入瀏覽器。目前,所有瀏覽器都實行這個政策。

同源策略是瀏覽器的一個安全功能,不同源的客戶端腳本(js文件)在沒有明確授權的情況下,不能讀寫對方資源。只有同一個源的腳本賦予dom、讀寫cookie、session、ajax等操作的權限。

url由協議、域名、端口和路徑組成,如果兩個url的協議、域名和端口相同,則這兩個url是同源的。

url 是否同源 原因
http://www.example.com/dir2/other.html 協議、端口、主機相同
https://example.com/dir/other.html 不同的協議(https)
http://www.example.com:81 端口不同(81)
http://news.example.com/ 域名不同

跨域CORS

現在,前端與后端分別是不同的端口,這就涉及到跨域訪問數據的問題,因為瀏覽器的同源策略,默認是不支持兩個不同域名間相互訪問數據,而我們需要在兩個域名間相互傳遞數據,這時我們就要為后端添加跨域訪問的支持。

我們使用django-cors-headers來解決后端對跨域訪問的支持。

使用django-cors-headers擴展

參考文檔https://github.com/ottoyiu/django-cors-headers/

 

安裝

pip install django-cors-headers

  

添加應用 在setting.py

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

  

中間層設置

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]

  

添加白名單

# CORS
CORS_ORIGIN_WHITELIST = (
    '127.0.0.1:8080',
   '127.0.0.1:8000',
   'localhost:8080', ) CORS_ALLOW_CREDENTIALS = True # 允許攜帶cookie

  

  • 凡是出現在白名單中的域名,都可以訪問后端接口
  • CORS_ALLOW_CREDENTIALS 指明在跨域訪問中,后端是否支持對cookie的操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM