5

我有一个对服务器端点的 AJAX 调用,该端点执行 301 重定向到同一页面,但带有斜杠。

浏览器在使用 AJAX 调用时会遵循重定向还是忽略它们?就我而言,它不遵循它们,但我认为它可能来自服务器配置。

4

4 回答 4

4

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

如何在 jQuery Ajax 调用后管理重定向请求

如何使用 jQuery 防止 ajax 请求跟随重定向

处理 jquery ajax 重定向

于 2012-09-12T10:47:34.590 回答
4

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

apache重写规则是这样的:

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

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

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

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

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

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

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

于 2014-05-01T05:57:44.323 回答
2

我也遇到了这个问题,关于尾部斜杠的建议让我思考......我在我的 Web.Config 中有一个重写规则,使所有内容都小写,这就是我的 AJAX 调用搞砸的原因。我正在发布到 GetResults(显示为 301),而我的重写器(出于某种未知原因?)正在将其更改为小写的 getresults GET,从而导致 404。

希望这可能对其他人有所帮助。

于 2014-10-31T02:11:59.757 回答
-1

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

于 2014-07-28T09:23:35.897 回答