<计算机与网络篇> 跨域

2023-12-29  本文已影响0人  Max_Law

跨域是指在 Web 开发中,浏览器的一种安全策略【同源策略】限制下,当一个网页发起的请求(如 Ajax 请求)的目标资源与当前网页不在同一个域名、协议或端口下时,浏览器会阻止这个请求,从而产生跨域问题。

出现跨域的原因主要是为了保护用户的隐私和安全。同源策略是浏览器默认实施的一种安全机制,它规定了来自同一个源(即协议、域名、端口都相同)的文档或脚本可以相互访问,而不同源的则不能。这种策略防止了一个恶意网站通过脚本获取或修改另一个网站上的敏感数据。

解决跨域的方法有以下几种:

跨域解决方案 描述
CORS(Cross-Origin Resource Sharing) W3C 标准,服务器通过在响应头中添加Access-Control-Allow-Origin等字段来告知浏览器允许的跨域请求源。
JSONP(JSON with Padding) 非官方的跨域解决方案,利用 <script> 标签可以加载跨域资源的特性,通过动态创建 script 标签调用服务器提供的 jsonp 服务,服务器返回调用特定回调函数的 JavaScript 代码片段实现数据交互。
代理 在前端服务器上设置代理,前端请求先发送到同一源的服务器,再由这台服务器转发到目标服务器,绕过浏览器的同源策略。
WebSocket 协议 虽然受同源策略限制,但可以通过升级协议的方式来实现跨域通信。
postMessage API 用于在不同源的窗口之间传递消息,可以在页面间实现跨域通信。

选择哪种方法取决于具体的应用场景和需求。

CORS

Access-Control-Allow-OriginAccess-Control-Allow-Headers 是两个与 CORS(跨源资源共享,Cross-Origin Resource Sharing)相关的 HTTP 响应头,它们在处理跨域请求时起到关键作用。

Access-Control-Allow-Origin

Access-Control-Allow-Headers

这两个头部一起工作,确保了跨域请求的安全性和可控性。浏览器在接收到跨域请求的响应时,会检查这些头部是否允许当前的请求源和头部字段,如果不允许,则会阻止请求的成功执行,以防止恶意的跨站攻击。

上一篇 下一篇

猜你喜欢

热点阅读