gpt4 book ai didi

javascript - 用jquery提取外域xml数据

转载 作者:行者123 更新时间:2023-11-30 20:35:53 25 4
gpt4 key购买 nike

我在通过jquery ajax从外部域中提取xml数据时在浏览器中出现错误。

我尝试这样做:

$.ajax({
type: "GET" ,
url: "http://api.radionomy.com/currentsong.cfm?radiouid=E8FBFBE1-E50F-4E6A-BEA7-CA2E41F96D0B&apikey=cf41bd17-7638-4c10-b869-341555a65d7f&type=xml&previous=yes&next=yes&cover=yes&callmeback=yes&defaultcover=yes" ,
dataType: "xml" ,
success: function(xml) {


var title = $(xml).find('title').text(),
artist = $(xml).find('artists').text();



Actc(title, artist);


}

});

我在设置间隔内有一个 ajax 请求,每 20 秒更新一次数据。

它运行了一段时间,但随后在浏览器(Chrome)中出现此错误并停止读取 xml 信息:

加载失败 http://api.radionomy.com/currentsong.cfm?radiouid=XXXXXXXX&apikey=xxxxxxx&callmeback=yes&type=xml&cover=yes&previous=yes : 请求的资源上不存在“Access-Control-Allow-Origin” header 。产地' http://localhost.canal ' 因此不允许访问。响应具有 HTTP 状态代码 403。

我查了资料,还是不清楚。除非在我的服务器上启用了 CORS,否则似乎无法使用 ajax 从不同的域中提取 xml 内容。

https://developer.mozilla.org/es/docs/Web/HTTP/Access_control_CORS

虽然我尝试将它添加到 .htaccess 但没有成功,因为我一直报错。我也试过用 php 来做,但也没有成功。我肯定做错了什么,我在这方面不是很专业。

htaccess:

<IfModule mod_rewrite.c>
Header add Access-Control-Allow-Origin: "*"
Header add Access-Control-Allow-Methods: "GET, POST, PATCH, PUT, DELETE, OPTIONS"
Header add Access-Control-Allow-Headers: "Origin, Content-Type, X-Auth-Token"
Header add Content-Type: "application/json"
</IfModule>

如何在没有 CORS 问题的情况下提取 XML 数据?

最佳答案

关于 CORS,它指的是远程服务器,而不是您自己的。所以 Radionomy 需要在他们的服务器上启用它。

但是您提到它在一段时间内可以正常工作,这意味着他们正确地设置了它(那些时候)。

因此,除非这是他们方面的问题,否则可能是在他们的 api 文档中,请求返回的 callmeback 值指定了下一个查询应该发生的时间。但是您已将其硬编码为 20 秒。也许他们阻止你是因为你尝试得太早,他们认为这是滥用。


绕过 CORS 的另一种方法是让您的 ajax 调用调用服务器上的页面,该页面将是对 API 进行远程调用的页面。这是因为 CORS 仅在从浏览器进行调用时才有效。

关于javascript - 用jquery提取外域xml数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com