CORS jQuery AJAX请求

31

我在进行ajax请求时遇到了麻烦。我收到了以下错误信息:

请求的资源上未提供Access-Control-Allow-Origin标头

所以,我尝试了这个jQuery ajax请求:

var request = $.ajax({
    type: 'GET',
    url: url,
    dataType: "json",
    xhrFields: {
        withCredentials: true
    }
});
request.done(function(data){
    console.log(data);
});    

但仍然无法正常工作。我仍然收到错误信息。

我应该如何修复这个问题?


API是否提供jsonp服务? - charlietfl
我应该从中得到这个 {"ticker":{"high":0.00061,"low":0.00045,"avg":0.00053,"vol":2284.80958,"vol_cur":4421342.40061,"last":0.00051,"buy":0.00052,"sell":0.00051,"updated":1386427668,"server_time":1386427668}} - user6827
这是一个跨域请求问题...请查阅谷歌的 Access-Control-Allow-Originsame origin policy。如果 API 不提供 jsonp,则需要使用服务器代理来获取数据。 - charlietfl
1个回答

52

很简单,您需要首先设置服务器HTTP响应头。 问题不在于您的前端JavaScript代码。 您需要返回此标头:

Access-Control-Allow-Origin:*
或者
Access-Control-Allow-Origin:your domain

Apache配置文件中,代码如下:

Header set Access-Control-Allow-Origin "*"

在Node.js中,代码如下:

res.setHeader('Access-Control-Allow-Origin','*');

2
谢谢!特别感谢 Node.js 代码,它非常好用。有没有办法默认设置头部而不是在每个 POST/GET 处理程序中设置呢? - angrymadcat
1
请参考以下链接了解如何在Express Node.js中允许CORS:https://dev59.com/questions/72w05IYBdhLWcg3wuUGY - Pieter Meiresone
我在我的一个应用程序中遇到了这个问题,但实际上问题并不是在服务器端 - 我完全将POST请求发送到了错误的URL。 - Lazerbeak12345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接