2008-11-27 27 views
14

Có cách nào để sử dụng XMLHttpRequest kết hợp với các tên miền khác không?Tôi có thể tạo XMLHttpRequest thành tên miền khác không?

Tôi muốn phân tích cú pháp một số xml từ Google mà không phải sử dụng máy chủ để nó chạy phức tạp về mặt tối giản.

var req = getXmlHttpRequestObject(); 
... 
req.open('GET', 'http://www.google.de/ig/api?weather=Braunschweig', true); 
     req.setRequestHeader("Content-Type","text/xml"); 
     req.onreadystatechange = setMessage; 
     req.send(null); 

Làm nó ở phía máy chủ là không có lựa chọn ít nhất thì tôi sẽ không phải hỏi

Trả lời

10

Không, không phải bây giờ. Tôi tin rằng tôi đã đọc rằng các kế hoạch/thiết kế đang ở trong các tác phẩm của các nhóm tiêu chuẩn cho tương lai, vì vậy chúng tôi có thể làm điều này một cách an toàn.

Lỗ hổng tập lệnh trên trang web sẽ tràn lan khôn ngoan khác.

JSONP là giải pháp khả thi nếu API của các trang web khác hỗ trợ.

+0

jsonp là từ ảo thuật , +1 –

2

Đó là vấn đề bảo mật, hầu hết các trình duyệt (tất cả?) Sẽ không cho phép bạn thực hiện điều đó. Bạn có thể sử dụng IFrame ẩn để thực hiện tìm nạp của mình, nhưng nó đủ phức tạp để tôi chỉ sử dụng máy chủ (hoặc chuyển sang ngôn ngữ khác, nếu tôi không phải chạy trong trình duyệt)

+0

Ngay cả với một Iframe ẩn, bạn vẫn chưa được thêm vào nội dung của nội dung nào đó từ một tên miền khác –

0

Điều đó là không thể do SOP (Chính sách gốc tương tự) mà trình duyệt có những ngày này để hạn chế các cuộc tấn công XSS.
Bạn sẽ phải sử dụng một kịch bản phía máy chủ (PHP hoặc một cái gì đó).

0

Bạn có thể thử làm điều gì đó trên máy chủ. Vì vậy, trên ứng dụng của bạn, bạn thực hiện yêu cầu đến trang web từ xa nhận kết quả và trả lại cho khách hàng của bạn. Cuộc gọi AJAX sau đó chỉ gọi máy chủ của riêng bạn và hoạt động.

+1

Bạn không đọc mô tả của mình? – Thomaschaaf

0

Có thể làm cho một XHR khác miền với HTML5.You cũng có thể thực hiện yêu cầu giao thức khác nhau với XHR khi giao tiếp với HTTP đến một trang web khác.

1

Bạn không thể thực hiện yêu cầu miền chéo, ví dụ: từ example1.com đến example2.com thông qua XMLHttpRequest hoặc jQuery (là một trình bao bọc của XMLHttpRequest) do vấn đề bảo mật ở phía máy khách (trình duyệt). Điều này có thể được triển khai hiệu quả trong trình duyệt hiện đại hỗ trợ HTML5 thông qua CORS (chia sẻ nguồn gốc chéo, vốn không thể có sẵn trong mọi trình duyệt của khách hàng. Vì vậy, giải pháp là chèn thẻ script vào example1.com của example2.com và giải pháp này được biết dưới dạng JSON-P (JSON có đệm), tên có thể gây nhầm lẫn vì dữ liệu có thể ở bất kỳ định dạng nào được máy chủ phân phát (example2.com). Mã thực thi của nó được cung cấp trong liên kết này http://newtechinfo.net/jsonp-for-cross-domain-ajax/

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