2012-04-11 37 views
6

Đây là vấn đề về tên miền chéo, nhưng vấn đề là trình duyệt (Chrome) dường như không theo dõi chuyển hướng. Thay vào đó, không có gì được trả lại cho cuộc gọi jQuery ajax và tôi gặp lỗi.Cuộc gọi jQuery ajax đến miền chuyển hướng đến một tên miền khác (không được theo sau)

Tôi đang cố gắng sử dụng jQuery.ajax, nhưng URL mà tôi đang sử dụng chuyển hướng đến tên miền khác. Khi điều này xảy ra, tôi gặp lỗi. Có điều gì đặc biệt cần được thực hiện để trình duyệt sẽ theo dõi chuyển hướng không?

Tôi đã thêm access-control-allow-origin: * vào tiêu đề của tên miền thứ hai đang được chuyển hướng đến.

+0

Bạn có thể thêm mã của bạn và các lỗi mà bạn nhìn thấy? –

+0

Bạn không được phép lấy dữ liệu từ các miền khác trong ajax của mình. –

Trả lời

0

Cách duy nhất để nhận cuộc gọi ajax giữa nhiều miền là sử dụng jsonp.

Trong jQuery, đặt .ajax() kiểu dữ liệu thành 'jsonp'. Xem tại đây: http://api.jquery.com/jQuery.ajax/

Nó vẫn có thể không hoạt động, nếu máy chủ được chuyển hướng đến không có khả năng phản hồi jsonp. Sự khác nhau giữa đáp ứng json và đáp ứng jsonp là đáp ứng json là một chuỗi json thuần túy, trong khi đáp ứng jsonp là mã gọi một hàm truyền vào trong một chuỗi json.

Một hướng dẫn không-quá-tồi tàn: http://remysharp.com/2007/10/08/what-is-jsonp/

Một cuộc thảo luận tốt: trang chuyển hướng Can anyone explain what JSONP is, in layman terms?

+2

Gọi tên miền chéo ajax là có thể với Cross-Origin Resource Sharing (CORS) và tác giả đã làm việc với công nghệ này (như ông đã đề cập "access-control-allow-origin: *" header.) – vadimk

+0

@vadimk, Có lẽ bạn có thể cung cấp câu trả lời liên quan đến cách tiếp cận này sau đó. Nhưng có vẻ như từ bài viết mà vấn đề là ở phía máy khách. Phương thức 'access-control-allow-origin' với CORS nằm ở phía máy chủ. Ngay cả khi máy chủ cho phép, máy khách vẫn chưa cho phép. Vì vậy, JSONP. –

+0

Jonathan, hãy xem câu trả lời của tôi. Giải pháp liên quan đến việc đảm bảo trang chuyển hướng có tiêu đề phản hồi phù hợp. – BigMacAttack

1

Một HTTP được đối xử như bất kỳ trang HTTP khác ở chỗ nó cũng cần các tiêu đề kiểm soát truy cập. Nếu trang chuyển hướng của bạn không có chúng, trình duyệt sẽ không bao giờ đi xung quanh để kiểm tra xem trang được chuyển hướng có quyền thích hợp hay không.

Cùng với sự Location tiêu đề trên trang chuyển hướng, cũng thêm Access-Control-Allow-Origin tiêu đề và các thành phần liên quan của nó (ví dụ: Access-Control-Allow-Methods vv)

+2

có rất nhiều lý thuyết trong câu trả lời của bạn .. một vài dòng mã để minh họa những gì bạn đang nói sẽ không làm tổn thương – abbood

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