jQuery ajax调用域重定向到另一个域(不遵循)

问题描述:

这是一种跨域问题,但问题是浏览器(Chrome)似乎没有遵循重定向。相反,没有任何东西返回给jQuery ajax调用,并且出现错误。jQuery ajax调用域重定向到另一个域(不遵循)

我试图使用jQuery.ajax,但我使用的URL重定向到了另一个域。发生这种情况时,出现错误。是否有什么特别的事情需要完成,以便浏览器遵循重定向?

我已将access-control-allow-origin: *添加到正被重定向到的第二个域的标头。

+0

你可以添加你的代码,你看到的错误? – 2012-04-11 20:48:02

+0

您不允许从您的ajax中的其他域获取数据。 – 2012-04-11 20:48:21

获得跨域ajax调用的唯一方法是使用jsonp。

在jQuery中,将您的.ajax() dataType设置为'jsonp'。看到这里:http://api.jquery.com/jQuery.ajax/

如果服务器被重定向到不能够jsonp响应,它仍然可能无法正常工作。 json响应和jsonp响应之间的区别在于,json响应是纯json字符串,而jsonp响应是调用传递json字符串的函数的代码。

一个不太寒酸教程:http://remysharp.com/2007/10/08/what-is-jsonp/

商量好了:Can anyone explain what JSONP is, in layman terms?

+2

跨域AJAX调用可能与跨源资源共享(CORS)和作者一起使用该技术(正如他提到的“access-control-allow-origin:*”头部)。 – vadimk 2012-09-09 22:13:51

+0

@vadimk,也许你可以提供一个答案然后涉及这种方法。但从帖子看来,问题出在客户端。 CORS的'access-control-allow-origin'方法在服务器端。即使服务器允许,客户端也不允许。因此JSONP。 – 2012-09-11 12:52:24

+0

乔纳森,看看我的答案。解决方案涉及确保重定向页面具有正确的响应标头。 – BigMacAttack 2013-09-14 23:32:41

HTTP重定向页面会被视为在于其还需要接入控制头部的任何其他HTTP页面。如果您的重定向页面没有这些页面,那么浏览器将永远无法检查被重定向到的页面是否具有适当的权限。

随着重定向页面上的Location头,还添加了Access-Control-Allow-Origin头及其相关成分(即Access-Control-Allow-Methods等)

+2

在你的答案中有很多理论..几行代码来说明你说的话不会伤害 – abbood 2014-04-22 05:44:46