2011-01-12 36 views
5

bằng cách sử dụng XMLHttpRequest không thể mở kết nối với tài liệu trên một tên miền khác với vị trí của trang được lưu trữ.Soạn thảo trang web chéo XMLHttpRequest trên cùng một máy chủ nhưng cổng khác nhau

nhưng còn các cổng khác thì sao?

ví dụ tôi có một máy chủ web chạy trên máy tính của tôi lắng nghe trên cổng 80 vì vậy các địa chỉ web sẽ trông như thế này:

http://localhost:80/mypage.html 

và tôi có một máy chủ web chạy trên localhost mà là có nghĩa là để xử lý các yêu cầu ajax nhưng lắng nghe trên một cổng khác. do đó javascript trong mypage.html sẽ trông giống như sau:

var xmlhttprequest = new XMLHttpRequest(); 
xmlhttp.open("GET", "http://localhost:1234/?parameters", true); 
xmlhttp.send(); 

có hoạt động không? hoặc nó sẽ đưa ra một ngoại lệ an ninh không?

Trả lời

8

Sử dụng một cổng khác thực sự được tính là tập lệnh trên nhiều trang.

Có một số cách nổi tiếng để thực hiện cuộc gọi (bạn luôn có thể gửi dữ liệu) và sử dụng phản hồi (đó là những gì bạn thường không thể làm theo các ràng buộc chống xss), bao gồm JSONP và sử dụng iframe trong trang để tải dữ liệu.

5

Điều này sẽ không xảy ra vì nó vẫn còn thực tế trên một máy chủ khác (ít nhất một phiên bản máy chủ khác, có thể không nằm dưới sự kiểm soát của bạn).

Bạn có thể thêm Access-Control-Allow-Origin: http://yourdomain:1234/ trong tiêu đề, google để chia sẻ tài nguyên gốc. Đó là relativelly mới mặc dù, không phải tất cả các trình duyệt biết về điều này. Hoặc bạn có thể sử dụng jQuery (đọc thêm trên http://softwareas.com/cross-domain-communication-with-iframes).

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