jQuery XML 错误“请求的资源上不存在“Access-Control-Allow-Origin”标头。”

2024-01-05

我正在开发我的个人项目只是为了好玩,我想读取位于以下位置的 xml 文件:http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml解析 xml 并使用它来转换货币之间的值。

到目前为止,我已经编写了下面的代码,这些代码对于读取 XML 来说是非常基本的,但我收到以下错误。

XMLHttpRequest 无法加载 ****。没有“访问控制允许来源” 标头存在于所请求的资源上。起源 因此不允许访问“http://run.jsbin.com”。

$(document).ready( 
    function() {     
        $.ajax({          
            type:  'GET',
            url:   'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml',
            dataType: 'xml',              
            success: function(xml){
                alert('aaa');
            }
         });
    }
);

我没有发现我的代码有任何问题,所以我希望有人能指出我的代码做错了什么以及如何修复它。


您将无法进行 ajax 调用http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml来自部署在的文件http://run.jsbin.com因为同源策略 http://en.wikipedia.org/wiki/Same-origin_policy.

作为来源(又名origin)页面和targetURL 位于不同的域(run.jsbin.com and www.ecb.europa.eu),你的代码实际上是试图做一个跨域(CORS) http://en.wikipedia.org/wiki/Cross-origin_resource_sharing请求,不是普通的请求GET.

简而言之,同源策略说浏览器应该只允许 ajax 调用服务相同的域HTML 页面的。

Example:

页面位于http://www.example.com/myPage.html只能直接请求位于http://www.example.com, like http://www.example.com/api/myService。如果该服务托管在另一个域中(例如http://www.ok.com/api/myService),浏览器不会直接进行调用(如您所料)。相反,它会尝试发出 CORS 请求。

简而言之,要跨不同域执行 (CORS) 请求*,您的浏览器:

  • 将包括一个Origin原始请求中的标头(以页面的域作为值)并照常执行;进而
  • Only if the server response to that request contains the adequate headers (Access-Control-Allow-Origin is one of them) http://enable-cors.org/server.html allowing the CORS request, the browse will complete the call (almost** exactly the way it would if the HTML page was at the same domain).
    • 如果预期的标头没有出现,浏览器就会放弃(就像它对您所做的那样)。


* The above depicts the steps in a simple request, such as a regular GET with no fancy headers. If the request is not simple (like a POST with application/json as content type), the browser will hold it a moment, and, before fulfilling it, will first send an OPTIONS request to the target URL. Like above, it only will continue if the response to this OPTIONS request contains the CORS headers. This OPTIONS call is known as preflight request.
** I'm saying almost because there are other differences between regular calls and CORS calls. An important one is that some headers, even if present in the response, will not be picked up by the browser if they aren't included in the Access-Control-Expose-Headers https://stackoverflow.com/questions/1557602/jquery-and-ajax-response-header/15444439#15444439 header.

如何修复它?

这只是一个错字吗?有时,JavaScript 代码只是在目标域中存在拼写错误。你检查过吗?如果页面位于www.example.com它只会定期调用www.example.com!其他网址,例如api.example.com甚至example.com or www.example.com:8080被考虑不同的浏览器的域名!是的,如果端口不同,那么它就是不同的域!

添加标题。最简单的方法enableCORS 是通过添加必要的标头(如Access-Control-Allow-Origin)到服务器的响应。 (每种服务器/语言都有一种方法可以做到这一点 -在这里检查一些解决方案 http://enable-cors.org.)

最后一招:如果您没有服务器端访问该服务的权限,您也可以对其进行镜像(通过诸如反向代理),并在其中包含所有必要的标头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery XML 错误“请求的资源上不存在“Access-Control-Allow-Origin”标头。” 的相关文章

  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • 如何让 jquery Tooltipster 插件适用于新创建的 DOM 元素?

    我正在使用 Tooltipster 插件http calebjacob com tooltipster http calebjacob com tooltipster 这很棒 但我已经动态生成了插入到 DOM 中的内容 工具提示程序似乎没有
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • 如何通过jquery更改元素的类名

    div class bestAnswerControl div class IsBestAnswer div div 我想补充一下 bestanswer some attribute 我想更换class IsBestAnswer div 到
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 优雅降级 - 何时考虑

    在为使用 AJAX 的应用程序设计和构建 UI 时 您何时考虑优雅降级 对于禁用 JavaScript 或正在使用屏幕阅读器的用户 最后 网站的 AJAX 版本完全完成后 在每个发展阶段 I don t 还有别的事 这些日子 渐进增强 ht
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012

随机推荐