我有一个服务器端点的AJAX调用301做重定向到同一页面,但有一个结尾的斜杠。301在AJAX上重定向 - 重定向?
浏览器在使用AJAX调用时是否遵循重定向,还是忽略它们?在我的情况下,它不遵循它们,但我想它可能是从服务器配置的东西。
我有一个服务器端点的AJAX调用301做重定向到同一页面,但有一个结尾的斜杠。301在AJAX上重定向 - 重定向?
浏览器在使用AJAX调用时是否遵循重定向,还是忽略它们?在我的情况下,它不遵循它们,但我想它可能是从服务器配置的东西。
如果你正在使用jQuery,你可以看看下面的问题来实现它。默认情况下,jQuery的(和使用Ajax最库)不遵循重定向默认:
How to manage a redirect request after a jQuery Ajax call
How to prevent ajax requests to follow redirects using jQuery
也许这个答案是有点晚了,但我有对于ajax请求的301响应同样存在问题。该解决方案是非常简单:
阿帕奇重写规则是这样的:
RewriteRule ^([^/]\w+)/?$ index.php?%{QUERY_STRING} [L,E=MODULE:$1]
你XHR请求的URL看起来成才这样的:
/this/is/a/canonical/url + '?param=1¶m=2...'
这将导致301永久移动如果您不使用直接文件调用(fi * .php),并重写为规范URL(看起来像不带fi * .php的目录路径),则可以改为。
为了解决这个问题,只需添加/你XHR请求的URL是这样的:
/this/is/a/canonical/url + '/' + '?param=1¶m=2...'
也许这将帮助别人。
这为我修好了,谢谢 –
根据jQuery的API文档(http://api.jquery.com/jQuery.ajax/),async:false
(又名同步模式)不支持跨域请求和dataType: "jsonp"
请求。
对不起,但是这个问题与这个问题有什么关系? –
@EduardLuca对不起,您的重定向不会跨域。 – GlacJAY
我不需要跨越另一个域,重定向发生在同一个URL上,但是以斜线结尾。 –
我也有这个问题,关于结尾的斜线的建议,让我想......我在我的web.config重写规则,使一切小写字母,这就是被搞乱了我的AJAX调用。我发布到GetResults(显示为301)和我的重写器(出于某些未知原因?),将其更改为较低的getresults GET,结果为404。
好,所以jQuery不遵循重定向,我明白了。谢谢。 –
恩,没有。 XHR将透明地遵循重定向。 –
并非在所有情况下。我有一个301重定向设置和FF不会跟着他们。然而,Chrome确实如此。 – threejeez