2012-09-12 158 views
5

我有一個服務器端點的AJAX調用301做重定向到同一頁面,但有一個結尾的斜槓。301在AJAX上重定向 - 重定向?

瀏覽器在使用AJAX調用時是否遵循重定向,還是忽略它們?在我的情況下,它不遵循它們,但我想它可能是從服務器配置的東西。

回答

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

好,所以jQuery不遵循重定向,我明白了。謝謝。 –

+7

恩,沒有。 XHR將透明地遵循重定向。 –

+1

並非在所有情況下。我有一個301重定向設置和FF不會跟着他們。然而,Chrome確實如此。 – threejeez

3

也許這個答案是有點晚了,但我有對於ajax請求的301響應同樣存在問題。該解決方案是非常簡單:

阿帕奇重寫規則是這樣的:

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

你XHR請求的URL看起來成才這樣的:

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

這將導致301永久移動如果您不使用直接文件調用(fi * .php),並重寫爲規範URL(看起來像不帶fi * .php的目錄路徑),則可以改爲。

爲了解決這個問題,只需添加/你XHR請求的URL是這樣的:

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

也許這將幫助別人。

+0

這爲我修好了,謝謝 –

-1

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

+2

對不起,但是這個問題與這個問題有什麼關係? –

+0

@EduardLuca對不起,您的重定向不會跨域。 – GlacJAY

+0

我不需要跨越另一個域,重定向發生在同一個URL上,但是以斜線結尾。 –

2

我也有這個問題,關於結尾的斜線的建議,讓我想......我在我的web.config重寫規則,使一切小寫字母,這就是被搞亂了我的AJAX調用。我發佈到GetResults(顯示爲301)和我的重寫器(出於某些未知原因?),將其更改爲較低的getresults GET,結果爲404。