Khi nào tôi cần sử dụng proxy với OpenLayers2?


8

Khi nào chính xác tôi cần sử dụng proxy với openlayers? Tôi đã đọc rất nhiều về điều này nhưng dường như không thể tìm thấy câu trả lời dứt khoát. Tự hỏi nếu đây là con đường của vấn đề của tôi.

Chẳng hạn, nếu tôi có một máy chủ chạy Geoserver (WFS) trên cổng 8080 và Apache (phục vụ OpenLayers) trên cổng 80 thì tôi có cần sử dụng proxy không?

Nếu các máy chủ tách biệt về mặt vật lý, tôi có cần sử dụng proxy không?

Câu trả lời:


8

Bạn cần một proxy nếu bạn đang thực hiện một yêu cầu AJAX đến một máy và / hoặc cổng khác với yêu cầu mà trang web của bạn được phục vụ.

Vì vậy, trong cả hai ví dụ của bạn ở trên, bạn sẽ cần một proxy (trên máy chủ đang phục vụ trang web) nếu bạn muốn thực hiện các yêu cầu WMS getfeatureinfo hoặc bất kỳ loại yêu cầu WFS nào. Tuy nhiên, bạn không cần proxy cho các yêu cầu getMap đơn giản của WMS.


Cảm ơn - điều đó có ý nghĩa. Tôi sẽ có một mẹo nhỏ với thiết lập proxy!
dùng8262

3

xin vui lòng đọc ở đâ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.

Tôi hy vọng nó sẽ giúp bạn...


2

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ế XMLHttpRequesttrong 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 XMLHttpRequestnà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 allowedHostsmả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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.