首页 > 其他分享 >了解 CORS 在 Web 浏览器中的工作原理

了解 CORS 在 Web 浏览器中的工作原理

时间:2024-09-21 16:34:17浏览次数:1  
标签:Web 标头 浏览器 请求 CORS cors 服务器 example

跨源资源共享 (cors) 是 web 浏览器中的一项重要安全功能,它控制 web 应用程序如何从与提供初始网页的域不同的域请求资源(例如数据、图像或脚本) 。它的主要目的是保护用户免受试图访问其他网站上敏感信息的恶意网站的侵害。本博客将解释 cors 的工作原理以及为什么它对于 web 开发至关重要。什么是 cors?简单来说,cors 是一种浏览器机制,用于控制网页可以从不同域请求哪些资源。默认情况下,浏览器实施同源策略 (sop),该策略限制网页向加载页面以外的域发出请求。此策略是一项基本安全功能,可防止网站之间潜在的有害交互。但是,在很多情况下,合法的跨源请求是必要的,例如,当 web 应用程序需要从托管在不同服务器上的 api 获取数据时。 cors 通过允许服务器指定允许哪些域访问其资源,以安全的方式启用此类请求。cors 如何运作?cors 的工作原理是向服务器的响应添加 http 标头,指示是否允许跨源请求。以下是 cors 运作方式的逐步细分:客户提出请求当网页尝试向不同来源(由域、协议和端口定义)发出请求(例如,通过 xmlhttprequest、fetch 或脚本包含)时,浏览器会检查该请求是否违反同源策略。cors 预检请求(对于复杂请求)某些请求,特别是那些使用 put、delete 或自定义标头等方法的请求,被认为是“复杂的”。在发送实际请求之前,浏览器会发送一个 options 请求,称为预检请求。此预检请求询问服务器是否允许实际请求并验证允许的 http 方法、标头和来源。服务器使用 cors 标头进行响应接收预检或实际请求的服务器发回带有特定标头的响应,指示该请求是否被允许。关键标头包括:access-control-allow-origin:此标头指定允许哪些域访问该资源。如果此标头包含请求的来源,则浏览器允许响应。例如,服务器可能会响应:access-control-allow-origin: https://example.com登录后复制登录后复制access-control-allow-methods:此标头指定服务器允许跨源请求的 http 方法(get、post、put 等)。access-control-allow-methods: get, post登录后复制access-control-allow-headers:指定实际请求中可以包含哪些自定义标头。access-control-allow-headers: content-type, authorization登录后复制access-control-allow-credentials:如果服务器允许凭据(cookie、http 身份验证),则将包含此标头并设置为 true。浏览器决定收到服务器的响应后,浏览器评估标头。如果服务器通过适当的 cors 标头授予权限,浏览器将允许跨源请求并处理响应。如果不是,浏览器会阻止请求,网页无法访问该资源。简单 cors 请求示例考虑这样一个场景:https://example.com 上托管的网页尝试向 https://api.example.com/data 托管的 api 发出 get 请求。fetch('https://api.example.com/data') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('error:', error));登录后复制在这种情况下,浏览器将请求发送到 https://api.example.com。如果 api 服务器配置为允许来自 https://example.com 的请求,它将使用标头进行响应:access-control-allow-origin: https://example.com登录后复制登录后复制如果标头缺失或不正确,浏览器将由于 cors 政策而阻止响应。cors 预检示例对于更复杂的请求,浏览器会发起预检请求,检查是否允许跨域请求。以下是触发预检的 put 请求示例:fetch('https://api.example.com/update', { method: 'put', headers: { 'content-type': 'application/json' }, body: json.stringify({ key: 'value' })});登录后复制浏览器发送如下所示的 options 请求:options /update http/1.1origin: https://example.comaccess-control-request-method: putaccess-control-request-headers: content-type登录后复制服务器应响应标头,指示是否允许此请求:Access-Control-Allow-Origin: https://example.comAccess-Control-Allow-Methods: PUTAccess-Control-Allow-Headers: Content-Type登录后复制如果这些标头存在且有效,浏览器将继续执行实际的 put 请求。cors 的重要性cors 是一项安全功能,为 web 服务器提供细粒度的机制来控制对其资源的访问。如果没有 cors,恶意网站可以在未经用户同意的情况下轻松从其他域获取敏感数据,从而导致跨站请求伪造 (csrf) 等安全漏洞。结论了解 cors 对于使用 api 和第三方资源的 web 开发人员至关重要。通过在服务器上配置适当的 cors 策略,开发人员可以确保其应用程序保持安全,同时仍然启用合法的跨域交互。如果您正在开发 web 应用程序并遇到 cors 错误,则必须检查服务器的配置并确保在响应中发送必要的标头。 以上就是了解 CORS 在 Web 浏览器中的工作原理的详细内容,更多请关注我的其它相关文章!

标签:Web,标头,浏览器,请求,CORS,cors,服务器,example
From: https://www.cnblogs.com/aow054/p/18424191

相关文章

  • Webpack 系列第 3 部分
    请查找该系列的旧部分以充分理解这个概念。webpack5系列第1部分webpack5系列第2部分webpack5系列第4部分在线电子商店申请让我们使用微前端来构建一个在线商店应用程序以实现模块化。每个微前端将代表商店的不同部分,它们将共享公共库,例如react、设计系统和共享......
  • 一键隐藏所有固定的浏览器扩展
    大家好,我是一名开发者,也是一名内容创作者。我经常需要录制教学视频。录制之前,需要做很多隐私保护准备,比如隐藏书签栏、隐藏顶部工具栏、隐藏我正在使用的浏览器扩展浏览器不提供一键隐藏所有固定浏览器扩展的功能,所以我开发了一个插件。该插件适用于以下场景:当内容创作者开始录制......
  • Web Development Job in 4
    简介网络开发领域持续快速发展,为拥有适当技能和知识的个人提供了令人兴奋的机会。如果您想进入这个充满活力的行业或提升自己的职业生涯,这里有一些重要策略可以帮助您在2024年找到梦想的工作:1.掌握基本技能编程语言:熟练掌握JavaScript、Python、Ruby或PHP等语言至关......
  • 使用 Nginx 搭建 Webdav 服务
    使用Nginx搭建Webdav服务一、自签名根证书1.生成根证书密钥opensslgenrsa-out./root.key20482.生成根证书opensslreq-x509-new-key./root.key-out./root.pem-days365交互信息CountryName(2lettercode)[]:CNStateorProvinceName(fullname)......
  • Golang在线客服系统源码:基于Gin框架,Websocket即时通讯企业网站客服聊天源码,包括后台管
    唯一客服系统是一款基于Golang的Gin框架构建的在线客服解决方案,支持独立部署,确保数据的私密性和安全性。它具备自适应的响应式设计,能够完美适配PC端、移动端以及APP内嵌等多种场景。客服端提供PC后台管理功能,实现实时消息接收和交流。此外,为了满足移动端回复需求,系统还利用uniapp......
  • 基于JavaWeb的原神游戏商城的设计与实现
    目录博主介绍:......
  • 使用 Rust 和 wasm-pack 开发 WebAssembly 应用
    一、什么是WebAssembly?WebAssembly是一种运行在现代Web浏览器中的新型二进制指令格式。它是一种低级别的字节码,可以被多种语言编译,并在浏览器中高效运行。1.1WebAssembly的背景与概念高性能计算:WebAssembly旨在提高Web应用的性能,接近原生速度,适合计算密集型任务......
  • DataX--Web:图形化界面简化大数据任务管理
            在处理大数据任务时,频繁地修改配置文件或编写脚本可能会变得繁琐且容易出错。DataXWeb提供了一个图形化界面,旨在简化这些操作,让用户通过直观的界面管理数据同步任务。DataXWeb简介        DataXWeb是一个开源项目,它允许用户通过Web界面来配置和管......
  • 494. 响应式动漫设计公司网站 大学生期末大作业 Web前端网页制作 html5+css+js
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有各行各业的Web前端网页制作的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这......
  • WebViz可视化工具的应用
    WebViz可视化Webviz是一个基于Web的可视化工具,意味着您可以通过浏览器/APP访问它,而不需要安装额外的软件。这对于远程访问和团队协作非常方便。Foxglove是一个开源的工具包,包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了一系列用于构建机器人应用程序的功能。本节将......