2012-09-12 37 views
5

Tôi có một cuộc gọi AJAX đến điểm cuối máy chủ thực hiện chuyển hướng 301 đến cùng một trang, nhưng với dấu gạch chéo.Chuyển hướng 301 trên AJAX - được chuyển hướng?

Trình duyệt có thực hiện theo các chuyển hướng khi được gọi bằng AJAX hay nó bỏ qua chúng? Trong trường hợp của tôi nó không theo họ, nhưng tôi đã tìm ra nó có thể là thứ gì đó từ cấu hình máy chủ.

Trả lời

4

Nếu bạn đang sử dụng jquery, bạn có thể xem các câu hỏi bên dưới để thực hiện nó. Theo mặc định jQuery (và hầu hết các thư viện với Ajax) không theo chuyển hướng theo mặc định:

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

OK để jQuery không theo dõi chuyển hướng, tôi hiểu. Cảm ơn. –

+7

Um, không. XHR sẽ minh bạch theo các chuyển hướng. –

+1

Không phải trong mọi trường hợp. Tôi đã có một thiết lập chuyển hướng 301 và FF không theo họ. Tuy nhiên, Chrome cũng vậy. – threejeez

3

Có lẽ câu trả lời này là một chút muộn nhưng tôi đã có cùng một vấn đề với đáp ứng 301 trên yêu cầu ajax. Giải pháp là khá đơn giản:

apache viết lại quy tắc là một cái gì đó như thế này:

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

url XHR-Yêu cầu của bạn trông someting như thế này:

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

Nó sẽ dẫn đến 301 di chuyển vĩnh viễn nếu bạn không sử dụng cuộc gọi tệp trực tiếp (fi * .php) và ghi đè lên URL chuẩn (trông giống như đường dẫn thư mục không có fi * .php).

Để giải quyết vấn đề này chỉ cần thêm một/to XHR-Yêu cầu-URL của bạn như thế này:

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

Có lẽ điều này sẽ giúp một ai đó.

+0

Điều này đã khắc phục sự cố cho tôi, cảm ơn –

-1

Theo tài liệu API của jQuery (http://api.jquery.com/jQuery.ajax/), async:false (còn gọi là chế độ đồng bộ hóa) không hỗ trợ tên miền chéo và yêu cầu dataType: "jsonp".

+2

Xin lỗi, nhưng điều này có liên quan gì đến câu hỏi này? –

+0

@EduardLuca Tôi rất tiếc, chuyển hướng của bạn không vượt qua miền. – GlacJAY

+0

Tôi không cần phải chuyển sang một tên miền khác, chuyển hướng xảy ra trên cùng một URL nhưng với dấu gạch chéo. –

2

Tôi cũng gặp vấn đề này và gợi ý về dấu gạch chéo đã khiến tôi suy nghĩ ... Tôi đã viết lại quy tắc trong Web.Config để tạo mọi thứ chữ thường và đó là điều đã làm rối tung cuộc gọi AJAX của tôi. Tôi đã đăng lên GetResults (hiển thị là 301) và viết lại của tôi (vì một số lý do không xác định?) Đã thay đổi nó thành một truy vấn có giá trị thấp hơn GET dẫn đến 404.

Hy vọng điều này có thể giúp người khác.

Các vấn đề liên quan