首页 > 其他分享 >同源策略与CORS

同源策略与CORS

时间:2024-08-17 18:08:58浏览次数:10  
标签:Control Origin 请求 跨源 Access 同源 CORS 允许 策略

基础概念

同源策略(Same-Origin Policy)是一个重要的浏览器安全机制。它用于限制一个源(origin)的脚本无法读取另一个源的资源。

源是什么

源(origin)由以下三个部分组成:

  • 协议(scheme)
  • 域名(host)
  • 端口(port)

限制的策略

允许跨源的操作

  • 加载资源: 加载 CSS、JavaScript、图片、字体等静态资源可以跨源进行。例如在 HTML 中引用其他域名下的 CSS 文件或图片。
  • 发送 GET 请求: 通过 <img> 标签、<link> 标签、<script> 标签等发送 GET 请求可以跨源进行。

不允许跨源的操作

  • 读取响应内容: 通过 XHR(XMLHttpRequest) 或 Fetch API 发送跨源请求时,无法读取响应内容的数据。
  • 操作 DOM: 无法读取或修改其他源的 DOM 元素。
  • 操作 Cookie: 无法读取或修改其他源的 Cookie。
  • 发送敏感的 HTTP 请求: 如跨源的 POST、PUT、DELETE 等请求。

CORS是什么

CORS (Cross-Origin Resource Sharing) 是一种基于 HTTP 头的机制,它允许服务器指定哪些源站有权限访问哪些资源。

  1. 当浏览器检测到当前请求跨域时,会自动在请求头中添加 Origin 字段,内容为当前源(协议 + 域名 + 端口)。
  2. 服务器收到请求后,检查 Origin 头,根据自身的跨域策略决定是否允许这个源访问资源。
  3. 如果允许跨域访问,服务器需要在响应头中添加以下字段:
  • Access-Control-Allow-Origin: 指定允许的源,可以是具体的域名,也可以是*表示允许所有源。
  • Access-Control-Allow-Methods: 指定允许的 HTTP 方法。
  • Access-Control-Allow-Headers: 指定允许的请求头。
  • Access-Control-Allow-Credentials: 是否允许发送 Cookie。
  • Access-Control-Max-Age: 预检请求的有效期。
  1. 浏览器收到响应后,检查是否存在上述 CORS 响应头,如果存在则允许跨域请求成功,否则请求失败。

标签:Control,Origin,请求,跨源,Access,同源,CORS,允许,策略
From: https://www.cnblogs.com/Ho1dF0rward/p/18364745

相关文章

  • CORS配置错误漏洞
    基础概念在部署SOP的情况下,为了实现跨域通信,开发人员必须使用不同的技术来绕过SOP,以便传递敏感信息。这种“绕过”发生了太多次,本身已经成为一个安全问题。因此,为了在不影响应用程序安全状态的前提下实现信息共享,HTML5中引入了跨域资源共享(CORS)这种机制,但这并没有解决所有问题。......
  • 同源政策的安全性对比与跨域现象的产生
    同源政策保证了浏览器的安全性的同时,也导致了跨域的产生同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。同源:协议、域名、接口同时相同同源政策的作用:限制了当前域......
  • Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy
    Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy介绍ES数据写入后,默认1s后才会被搜索到(refresh_interval为1);这样可能是考虑到性能问题,毕竟实时IO消耗较多资源造成的问题例如一个索引现在有100个文档,当新增一个文档时,立即查询,显示数量为100,并不为101例如......
  • 深度优化Nginx负载均衡策略,携手Keepalived打造高可用服务架构新纪元
     作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客目录前言:让我们首先来谈谈容灾与备份策略:实验目标:七台虚拟机集群利用Nginx负载均衡与Keepalived共筑高可用......
  • Swift编译加速:模块化策略与实践
    标题:Swift编译加速:模块化策略与实践在Swift语言的生态中,编译速度是衡量开发效率的关键指标之一。Swift编译器的模块化部署策略,作为提升编译速度的重要手段,其核心在于将大型项目分解为更小的、可管理的模块,从而减少编译时需要处理的代码量。本文将深入探讨Swift编译器的模块......
  • 微前端架构下的应用版本回退策略与实践
    微前端架构通过将复杂的前端应用拆分为多个小型、独立的子应用,提高了开发效率和应用的可维护性。然而,随着应用的迭代更新,可能会遇到新版本发布后出现的问题,这时版本回退成为了确保应用稳定性的关键策略。本文将详细介绍在微前端架构下如何实现应用的版本回退,包括版本控制、......
  • 微前端架构下的应用SEO优化:策略与实践
    微前端架构通过将大型前端应用拆分为多个小型、自治的子应用,提供了更高的灵活性和可维护性。然而,这种架构也给搜索引擎优化(SEO)带来了挑战。本文将详细介绍在微前端架构下如何实现应用的SEO优化,包括SEO的基本原则、微前端架构下的SEO挑战、优化策略和最佳实践。SEO的基本原......
  • 微前端架构下的响应式设计实现策略
    微前端架构通过将一个庞大的前端应用拆分成多个小型、自治的子应用,提高了开发效率和应用可维护性。然而,这种架构也给实现统一的响应式设计带来了挑战。本文将探讨在微前端架构下如何实现应用的响应式设计,确保应用在不同设备和屏幕尺寸上都能提供良好的用户体验。响应式设计......
  • 微前端架构下子应用的性能优化策略
    微前端架构通过将大型前端应用拆分成多个小型、独立的子应用,提供了更高的灵活性和可维护性。然而,这种架构也带来了一些性能挑战。本文将深入探讨微前端架构中子应用性能优化的策略,包括代码分割、懒加载、缓存利用、服务端渲染等关键技术,并提供实际代码示例。微前端架构的性......
  • 策略模式
    publicclassT{publicstaticvoidmain(String[]args){TravleContextcontext=newTravleContext(newCar());context.selectTravle();}}/*环境类Conext**/classTravleContext{privateITravleStategyiTravleStategy;pu......