Python-Django浏览器同源策略

Posted liuxinyu12378

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的操作。

以上是关于Python-Django浏览器同源策略的主要内容,如果未能解决你的问题,请参考以下文章

浏览器的同源策略

同源策略CORS

浏览器安全之同源策略

同源策略

同源策略与跨域请求

同源策略与跨域请求