【发布时间】:2015-07-25 15:04:23
【问题描述】:
我正在尝试使用以下代码通过本地主机访问 API:
$.ajax({
url: "http://domain.xxx.net/api/tokens.json?email=xxx@xxx.net&password=xxx",
//method: "GET",
headers: { "Accept": "application/xml", "Content-Type": "application/xml", "Access-Control-Allow-Origin": "*"},
dataType: "JSON",
success:function(data){
alert(data);},
success:function(e){
alert(e.message);}
});
我通过互联网了解到,由于以下错误,这是不可能的。
请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:3000' 因此不允许访问。
经过一些研究,据说我可以使用 JSONP 或 CORS。我能够使用 JSONP,但是,我收到了一个 js 错误,因为 API 只支持 JSON 和 XML,而不支持 JSONP。现在我正在尝试将我的 ajax 调用转换为 CORS,但我根本无法理解语法。我总是收到关于“Access-Control-Allow-Origin”的相同错误。
希望有人能帮我翻译一下。谢谢。
【问题讨论】:
-
CORS 支持必须由服务器实现...所以除非您可以控制服务器,否则您无能为力
-
CORS 并不是你在 JS 中真正改变的东西,它是由服务器完成的......
-
我遇到了同样的问题,你必须从服务器 api 端启用 Access-Control-Allow-Origin。它与标题无关
-
如果服务器不支持 CORS 或 JSONP,那么另一种可能的解决方案是使用您的 Web 服务器进行远程 API 调用。即从您的站点向您的 Web 服务器发送一个 ajax 请求,然后从服务器您可以进行远程 api 调用
标签: javascript jquery ajax json cors