理解“Access-Control-Allow-Origin”标头
在跨域通信领域,“Access-Control-Allow-Origin”标头-Allow-Origin' (ACAO) 标头起着至关重要的作用。它控制来自不同来源(例如不同域或子域)的网页如何相互交互。让我们深入研究它的语义和机制,以解决常见的误解。
揭穿误解
与最初的假设相反,ACAO 标头并未向 JavaScript 代码授予广泛的权限发出跨源请求。相反,它按照以下规则运行:
-
特定来源的权限: ACAO 标头指定允许访问资源的来源(域、方案和端口) 。例如,如果“Access-Control-Allow-Origin: http://siteB.com”作为响应标头返回,则这只意味着 http://siteB.com 上的资源可以访问给定资源。
-
基于响应的授权: ACAO 标头作为服务器响应标头的一部分返回。它指示有权从服务器检索或发送数据的源,无论请求源自何处。
启用跨源访问
启用站点 A 上的 JavaScript 代码以使用 ACAO 访问站点 B 上的资源header:
-
提供响应标头: 将 'Access-Control-Allow-Origin: http://siteA.com' 标头添加到站点上资源的响应标头中您希望站点 A 访问的 B。
-
预检请求: 对于使用非标准 HTTP 的请求动词(PUT、DELETE 等)或非简单请求标头,浏览器会发起预检 OPTIONS 请求来检查是否允许此类请求。站点 B 应在其预检响应标头中包含“Access-Control-Allow-Methods”和“Access-Control-Allow-Headers”以授予权限。
注意: JSONP是一种启用跨域请求的变通技术,但与依赖于 CORS(跨域资源共享)的 CORS 相比,它容易存在安全风险,并且功能有限。 ACAO 标头。
以上是'Access-Control-Allow-Origin”标头如何控制跨源资源共享?的详细内容。更多信息请关注PHP中文网其他相关文章!