• AJAX学习笔记——同源策略


    同源策略

    同源策略,所有浏览器都实行这个政策
    最初,它的含义是指,A 网页设置的 Cookie,B 网页不能打开,除非这两个网页“同源”。所谓“同源”指的是“三个相同”。

    • 协议相同
    • 域名相同
    • 端口相同

    同源策略的目的

    为了保证用户信息安全,防止恶意的网站窃取数据。(防止Cookie共享,比如用户的登录信息)

    限制范围

    随着互联网的发展,同源政策越来越严格。目前,如果非同源,共有三种行为受到限制。

    • 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB。
    • 无法接触非同源网页的 DOM。
    • 无法向非同源地址发送 AJAX 请求(可以发送,但浏览器会拒绝接受响应)。

    解决无法读取非同源网页的 Cookie方法

    domain 属性可以解决因同源安全策略带来的不同文档的属性共享问题。

    domain 属性可返回下载当前文档的服务器域名。(即当前文档所在的服务器域名)
    Cookie 是服务器写入浏览器的一小段信息,只有同源的网页才能共享。如果两个网页一级域名相同,只是次级域名不同,浏览器允许通过设置document.domain共享 Cookie。
    因为浏览器通过document.domain属性来检查是否同源。
    另外,服务器也可以在设置 Cookie 的时候,指定 Cookie 的所属域名为一级域名,比如.example.com。
    这样的话,二级域名和三级域名不用做任何设置,都可以读取这个 Cookie。

    解决无法接触非同源网页的 DOM方法

    方法1:
    如果两个窗口一级域名相同,只是二级域名不同,那么设置document.domain属性,就可以规避同源政策,拿到 DOM。
    方法2:
    对于完全不同源的网站,目前有两种方法,可以解决跨域窗口的通信问题。

    • 片段识别符(fragment identifier)
    • 跨文档通信API(Cross-document messaging)

    解决无法读取非同源网页的LocalStorage方法

    跨文档通信API(Cross-document messaging)

    参考资料:https://wangdoc.com/javascript/bom/same-origin.html

  • 相关阅读:
    RabbitMQ知识点整理12-消费端的确认与拒绝
    RabbitMQ知识点整理11-消费消息
    RabbitMQ知识点整理0-准备工作和记录
    设计模式-23种设计模式
    设计原则-6大设计原则
    super在python 2.7和Python3中的使用
    rest-framework 视图类源码分析
    celery 组件在django环境应用
    rest framwork 4 分页功能
    rest framework 学习 序列化
  • 原文地址:https://www.cnblogs.com/songsongblue/p/11912559.html
Copyright © 2020-2023  润新知