点此进入CSDN

点此添加QQ好友 加载失败时会显示




【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的操作。
posted @ 2018-10-28 15:12  高颜值的殺生丸  阅读(1478)  评论(0编辑  收藏  举报

作者信息

昵称:

刘新宇

园龄:4年6个月


粉丝:1209


QQ:522414928