zoukankan      html  css  js  c++  java
  • 【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的操作。
    多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
  • 相关阅读:
    解释之前遗留的方法覆盖问题
    多态在开发中的作用
    多态的基础语法
    Go 统计汉子字符
    Go map
    Go make和new的区别
    Go 指针
    Go 切片
    Go数组
    Go中交换两个值类型
  • 原文地址:https://www.cnblogs.com/LiuXinyu12378/p/11259081.html
Copyright © 2011-2022 走看看