Khi JavaScript được phát triển lần đầu tiên, người ta không tưởng tượng rằng nó sẽ được sử dụng rộng rãi như vậy và do đó, nhiều giả định đã được đưa ra trong quá trình phát triển của nó, ngày nay đã trở thành vấn đề.
Khi Microsoft thiết kế XMLHttpRequest
trong Trình duyệt Internet Explorer của họ, nó được thiết kế với một hạn chế lớn.
Điều XMLHttpRequest
này không cho phép bạn trực tiếp thực hiện một yêu cầu đến một máy chủ khác. Ngay cả hai máy chủ chạy trên cùng một máy, nhưng các cổng khác nhau có giới hạn này.
Những gì bạn cần làm là có proxy cgi trên máy chủ web apache của bạn (cổng 80) và sử dụng OpenLayers.Proxyhost để trỏ đến nó.
Trang web OpenLayers có Câu trả lời Câu hỏi thường gặp cho vấn đề này :
Tại sao tôi cần Proxyhost?
Do các hạn chế bảo mật trong Javascript, không thể truy xuất thông tin từ các miền từ xa thông qua XMLHttpRequest.
Các lớp như WFS và GeoRSS sử dụng XMLHTTPRequest để lấy dữ liệu của họ. Nếu họ đang truy vấn một máy chủ từ xa (bất cứ thứ gì khác ngoài máy lưu trữ trang của bạn), bạn phải cài đặt tập lệnh proxy ở đâu đó có thể truy cập web trên máy đó. Xem bên dưới để biết cách thiết lập Proxyhost của riêng bạn.
Nếu biến OpenLayers.Proxyhost không được đặt thành máy chủ proxy hợp lệ, các yêu cầu được gửi trực tiếp đến các máy chủ từ xa. Trong hầu hết các trường hợp, kết quả sẽ là một ngoại lệ bảo mật, mặc dù ngoại lệ này thường xảy ra âm thầm. Làm cách nào để thiết lập Proxyhost?
Một kịch bản máy chủ proxy ví dụ có sẵn ở đây:
trunk / openlayers / example / proxy.cgi
Đối với cấu hình Apache tiêu chuẩn, bạn sẽ đặt proxy.cgi vào thư mục / usr / lib / cgi-bin / của bạn.
Khi tập lệnh máy chủ proxy đã được cài đặt, bạn phải chỉnh sửa biến OpenLayers.Proxyhost để khớp với URL đó.
Với cấu hình Apache tiêu chuẩn ở trên:
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
Nếu bạn đã làm một cái gì đó như thế này, bạn sẽ có thể truy cập:
http://YourDomain.example.com/cgi-bin/proxy.cgi
Nội dung kết quả tại trang đó phải là trang web openlayers.org.
Nếu bạn gặp lỗi 404 thay vào đó, tập lệnh proxy không ở đúng vị trí hoặc máy chủ web của bạn không được cấu hình đúng.
Sau khi bạn đã sao chép tệp proxy vào máy chủ của mình, đừng quên chỉnh sửa allowedHosts
mảng.
Mặc dù các câu trả lời hiện có khá cũ, tôi cảm thấy rằng cần phải có một câu trả lời thấu đáo, vì câu hỏi này đã trở thành một câu hỏi chính tắc, và nhiều câu hỏi khác được đóng lại như là bản sao của nó. Đây là nỗ lực của tôi để trả lời câu hỏi này, dựa trên các câu trả lời khác mà tôi đã viết trên trang web này.