6

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

我正在尝试使用jQuery.ajax,但我使用的 URL 重定向到另一个域。发生这种情况时,我得到一个错误。是否有什么特别需要做的,以便浏览器跟随重定向?

我已经添加access-control-allow-origin: *到被重定向到的第二个域的标题中。

4

2 回答 2

1

HTTP 重定向页面被视为任何其他 HTTP 页面,因为它也需要访问控制标头。如果您的重定向页面没有它们,浏览器将永远不会检查被重定向到的页面是否具有适当的权限。

Location重定向页面上的标题一起,还添加Access-Control-Allow-Origin标题及其相关成分(即Access-Control-Allow-Methods等)

于 2013-09-14T23:30:06.527 回答
0

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

在 jQuery 中,将您的数据类型设置.ajax()为“jsonp”。见这里:http ://api.jquery.com/jQuery.ajax/

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

一个不太破旧的教程:http ://remysharp.com/2007/10/08/what-is-jsonp/

一个很好的讨论:谁能用外行的术语解释 JSONP 是什么?

于 2012-04-11T20:48:51.777 回答