当前位置: 首页 > news >正文

CORS(跨域资源共享)和SOP(同源策略)

        CORS(跨域资源共享)和SOP(同源策略)不是同一个东西,但它们紧密相关,并且常常一起讨论,因为 CORS 是为了解决同源策略带来的跨域问题而引入的。

同源策略(Same-Origin Policy)

同源策略是一种浏览器安全机制,用于限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。同源策略的核心是确保不同源之间的资源不会互相干扰,从而保护用户的安全。

  • 同源定义

    • 协议(protocol)、主机(host)和端口(port)三者必须完全相同,才被认为是同源。
    • 例如,http://example.com/page1 和 http://example.com/page2 是同源的,但 http://example.com 和 https://example.com 不是同源的(协议不同),http://example.com 和 http://sub.example.com 也不是同源的(主机不同)。
  • 同源策略的限制

    • JavaScript 不能直接访问不同源的页面内容。
    • AJAX 请求不能发送到不同源的服务器。
    • Cookie、LocalStorage 等存储机制也有同源限制。

CORS(跨域资源共享)

CORS 是一种机制,它允许服务器在响应中添加特定的 HTTP 头,从而允许浏览器放宽同源策略的限制,使得不同源的网页可以请求和访问资源。

  • CORS 的工作原理

    • 预检请求(Preflight Request):对于复杂请求(如带有自定义头的请求、PUT 或 DELETE 请求),浏览器会先发送一个 OPTIONS 请求到服务器,询问服务器是否允许实际的请求。
    • 简单请求(Simple Request):对于简单请求(如 GET、POST 请求,且没有自定义头),浏览器会直接发送请求,但在请求头中会包含 Origin 字段,表明请求来自哪个源。
    • 服务器响应:服务器在响应中添加 Access-Control-Allow-Origin 头,表示允许哪些源访问资源。如果源不在允许列表中,浏览器会阻止请求。
  • CORS 的优点

    • 允许跨域请求,提高前后端分离开发中的灵活性。
    • 增强了安全性,因为服务器可以控制哪些源可以访问资源。

总结

  • 同源策略:是一种浏览器安全机制,限制不同源之间的资源交互。
  • CORS:是一种解决同源策略限制的机制,允许服务器通过特定的 HTTP 头放宽同源策略,使得跨域请求成为可能。

虽然它们不是同一个东西,但 CORS 是为了解决同源策略带来的跨域问题而设计的。理解它们之间的关系和区别,有助于更好地进行 Web 开发和安全配置。

http://www.lryc.cn/news/479026.html

相关文章:

  • 【系统设计】数据库压缩技术详解:从基础到实践(附Redis内存优化实战案例)
  • 基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)
  • debian11安装最新rabbitmq
  • 三十三、Python基础语法(面向对象其他语法-下)
  • 简单又便宜的实现电脑远程开机唤醒方法
  • Flutter鸿蒙next 状态管理框架对比分析
  • Vue Router进阶详解
  • 进程的控制
  • 基于C语言实现的图书管理系统
  • 删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法
  • ARM base instruction -- ccmp (immediate)
  • 高德 阿里231滑块 分析
  • Unity 的 WebGL 构建中资源图片访问方式
  • WinForms 中使用 MVVM 模式构建应用:实现登录页面、页面导航及 SQLite 数据库连接完整框架搭建过程
  • Chrome调试工具(查看CSS属性)
  • MQTT从入门到精通之MQTT入门
  • Hadoop生态系统主要包括哪些组件以及它们的作用
  • OpenResty 1.27.1.1 已经正式发布
  • 定高虚拟列表:让大数据渲染变得轻松
  • python request与grequests该如何选择
  • Unity3D UI 拖拽
  • 介绍一下memcpy(c基础)
  • 【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
  • python-23-一篇文章帮你理解Python推导式
  • WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查
  • CesiumJS 案例 P15:检测标记、鼠标点击移动标记、鼠标拖动标记
  • Webserver(4.9)本地套接字的通信
  • [IAA系列] Image Aesthetic Assessment
  • 基于springboot的高校科研管理系统(源码+调试+LW)
  • Flutter环境配置