jQuery XML 错误:“请求的资源上不存在‘Access-Control-Allow-Origin’标头”
尝试时使用 jQuery 访问位于不同域的 XML 文件时,您可能会遇到错误消息:“请求的资源上不存在‘Access-Control-Allow-Origin’标头。”此错误是由于同源策略导致的,该策略限制跨源 AJAX 调用。
了解同源策略
同源策略强制执行以下操作Web 浏览器仅允许对与发出请求的 HTML 页面位于同一域中的服务进行 AJAX 调用。在给定的示例中,HTML 页面托管在 http://run.jsbin.com/ 上,而 XML 文件位于 http://www.ecb.europa.eu/ 上,从而导致跨域请求:被浏览器阻止。
启用跨源请求 (CORS)
要允许跨源请求,服务器必须在其响应中包含适当的标头。这些标头之一是 Access-Control-Allow-Origin 标头,它指定允许访问资源的源。
对于 XML 文件,ECB 的服务器不提供必要的 CORS标头,因此出现错误消息。要解决此问题,需要将服务器配置为包含以下标头:
Access-Control-Allow-Origin: http://run.jsbin.com Access-Control-Allow-Methods: GET Access-Control-Allow-Headers: Content-Type
预检请求注意事项
在某些情况下,例如在进行对于带有非简单标头的 POST 请求,浏览器可能会执行 OPTIONS 预检请求来确定服务器是否支持特定请求的 CORS。如果服务器对此预检请求的响应不包含适当的 CORS 标头,则主请求将失败并显示相同的错误消息。因此,在对预检和主请求的响应中包含必要的标头非常重要。
以上是为什么从不同域访问 XML 文件时出现'No 'Access-Control-Allow-Origin' Header”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!