【发布时间】:2018-04-16 07:36:12
【问题描述】:
通过 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);
}
});
我在每 20 秒更新一次数据的 setinterval 内收到该 ajax 请求。
一会还好,后来浏览器(Chrome)报这个错误,停止读取xml信息:
无法加载 http://api.radionomy.com/currentsong.cfm?radiouid=XXXXXXXX&apikey=xxxxxxx&callmeback=yes&type=xml&cover=yes&previous=yes:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin '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 没有启用它。他们在这里说:board.radionomy.com/viewtopic.php?f=35&t=26734我已经尝试过这个解决方案,它给出了同样的错误。还有其他方法可以提取这些数据吗?
-
那个线程的 OP 和你有同样的问题。并构建了一个工具来解决它
-
您可以简单地在您的服务器上发出请求,然后将 xml 发送到您的客户端
标签: javascript jquery ajax xml cors