我正在做一个 AJAX 调用我自己的服务器在一个平台上,他们设置防止这些ajax调用(但我需要它从我的服务器获取数据,以显示检索到的数据从我的服务器的数据库).我的ajax脚本工作,它可以发送数据到我的服务器的php脚本,让它处理.但它不能得到处理的数据回来,因为它被"Access-Control-Allow-Origin"
阻止
我没有访问该平台的源代码/核心。所以我不能删除脚本,它不允许我这样做。(P/S我用谷歌浏览器的控制台,发现了这个错误)
AJAX 代码如下所示:
$.ajax({
type: "GET",
url: "http://example.com/retrieve.php",
data: "id=" + id + "&url=" + url,
dataType: 'json',
cache: false,
success: function(data)
{
var friend = data[1];
var blog = data[2];
$('#user').html("<b>Friends: </b>"+friend+"<b><br> Blogs: </b>"+blog);
}
});
或者上面的 AJAX 脚本有JSON
的等价代码吗?我认为JSON
是允许的。
我希望有人能帮我。
5条答案
按热度按时间bkkx9g8r1#
把这个放在retrieve.php的顶部:
请注意,这实际上禁用了CORS保护,并使您的用户暴露在攻击之下。如果您不完全确定是否需要允许 * 所有 * 来源,则应将其锁定到更具体的来源:
请参阅以下堆栈答案,以更好地理解
Access-Control-Allow-Origin
https://stackoverflow.com/a/10636765/413670
xurqigkl2#
警告,Chrome(和其他浏览器)将抱怨如果您遵循其他一些答案设置了多个ACAO头。
错误将类似于**
XMLHttpRequest cannot load ____. The 'Access-Control-Allow-Origin' header contains multiple values '____, ____, ____', but only one is allowed. Origin '____' is therefore not allowed access.
**试试这个:
8i9zcol23#
我已经修复了调用MVC 3控制器时的问题。我添加了:
在我
我的
$.ajax
也抱怨它不接受 AJAX 调用中的Content-type头,所以我注解掉了它,因为我知道它的JSON被传递给了Action。希望能有所帮助。
ffvjumwh4#
使用
*
是一个非常糟糕的主意,它会让你对跨站点脚本敞开大门。你基本上希望你自己的域一直在你当前的SSL设置范围内,并且可以选择额外的域。你还希望它们都作为一个标头发送。下面的代码将总是在与当前页面相同的SSL范围内授权你自己的域。并且可以选择性地包括任意数量的附加域。它会将它们作为一个报头发送,并且如果其他东西已经发送了它们,则覆盖前面的一个(或多个),以避免浏览器抱怨发送了多个访问控制报头的任何机会。用法:
你懂的。
gzszwxb45#
您是否尝试过将Access-Control-Allow-Origin报头添加到从服务器发送的响应中?例如
Access-Control-Allow-Origin: *
?