301重定向AJAX - 重定向?

时间:2012-09-12 10:35:09

标签: ajax redirect

我对服务器端点进行了AJAX调用,该端点执行301重定向到同一页面,但是使用尾部斜杠。

使用AJAX调用浏览器时是否遵循重定向或忽略它们?在我的情况下,它不遵循它们,但我认为它可能来自服务器配置。

4 个答案:

答案 0 :(得分:4)

如果您使用的是jquery,可以查看下面的问题来实现它。默认情况下,jQuery(以及大多数带有Ajax的库)默认不遵循重定向:

How to manage a redirect request after a jQuery Ajax call

How to prevent ajax requests to follow redirects using jQuery

handle jquery ajax redirect

答案 1 :(得分:3)

也许这个答案有点晚了,但我对ajax请求的301响应有同样的问题。解决方案非常简单:

apache重写规则是这样的:

RewriteRule ^([^/]\w+)/?$ index.php?%{QUERY_STRING} [L,E=MODULE:$1]

您的XHR-Request网址看起来像这样:

/this/is/a/canonical/url + '?param=1&param=2...'

如果您不使用直接文件调用(f.i. * .php)并重写为规范URL(看起来像没有f.i. * .php的目录路径),它将导致301永久移动。

要解决此问题,只需在您的XHR-Request-URL中添加一个/,如下所示:

/this/is/a/canonical/url + '/' + '?param=1&param=2...'

也许这会对某人有所帮助。

答案 2 :(得分:2)

我也有这个问题,并且关于尾随斜杠的建议让我思考...我的Web.Config中有一个重写规则,使所有内容都小写,这就是弄乱我的AJAX调用。我正在POST给GetResults(显示为301)和我的重写器(出于某种未知的原因?)正在将其改为较低的getresults GET,结果是404.

希望这可能有助于其他人。

答案 3 :(得分:-1)

根据jQuery的API文档(http://api.jquery.com/jQuery.ajax/),async:false(又名同步模式)不支持跨域和dataType: "jsonp"请求。