Kapan saya perlu menggunakan proxy dengan OpenLayers2?

8

Kapan tepatnya saya perlu menggunakan proxy dengan openlayers? Saya telah melakukan banyak membaca tentang ini tetapi tampaknya tidak dapat menemukan jawaban yang pasti. Ingin tahu apakah ini adalah rute masalah saya.

Sebagai contoh, jika saya memiliki satu server yang menjalankan Geoserver (WFS) pada port 8080 dan Apache (melayani OpenLayers) pada port 80 apakah saya perlu menggunakan proxy?

Jika server terpisah secara fisik, apakah saya perlu menggunakan proxy?

pengguna8262
sumber

Jawaban:

8

Anda memerlukan proxy jika Anda membuat permintaan AJAX ke mesin dan / atau port yang berbeda dari yang dilayani oleh halaman web Anda.

Jadi, dalam kedua contoh Anda di atas, Anda akan memerlukan proxy (pada server yang melayani halaman web) jika Anda ingin membuat permintaan getfeatureinfo WMS atau segala jenis permintaan WFS. Namun Anda tidak perlu proxy untuk permintaan getMap WMS sederhana.

Ian Turton
sumber
Terima kasih - itu masuk akal. Saya akan bermain biola dengan pengaturan proxy!
user8262
3

tolong baca di sini .

Mengapa saya perlu ProxyHost?

Karena pembatasan keamanan dalam Javascript, tidak mungkin untuk mengambil informasi dari domain jauh melalui XMLHttpRequest.

Kelas-kelas seperti WFS dan GeoRSS menggunakan XMLHTTPRequest untuk mendapatkan data mereka. Jika mereka menanyakan server jarak jauh (selain mesin yang meng-host halaman Anda), Anda harus menginstal skrip proxy di suatu tempat yang dapat diakses web di mesin itu. Lihat di bawah ini untuk cara mengatur ProxyHost Anda sendiri.

Jika variabel OpenLayers.ProxyHost tidak diatur ke host proxy yang valid, permintaan dikirim langsung ke server jarak jauh. Dalam kebanyakan kasus, hasilnya akan menjadi pengecualian keamanan, meskipun pengecualian ini sering terjadi secara diam-diam.

Saya harap ini membantu Anda ...

Aragon
sumber
2

Ketika JavaScript pertama kali dikembangkan, tidak terbayangkan bahwa ia akan digunakan secara luas, dan karenanya banyak asumsi dibuat selama pengembangannya, yang telah menjadi masalah saat ini.

Ketika Microsoft mendesain XMLHttpRequestdi Internet Explorer Browser mereka, itu dirancang dengan batasan besar.

Tidak XMLHttpRequestmemungkinkan Anda untuk secara langsung membuat permintaan ke server lain. Bahkan dua server berjalan pada mesin yang sama, tetapi port yang berbeda memiliki batasan ini.

Yang perlu Anda lakukan, adalah memiliki proxy cgi pada server web apache Anda (port 80), dan gunakan OpenLayers.ProxyHost untuk mengarahkannya.

Situs OpenLayers memiliki Jawaban FAQ untuk masalah ini :

Mengapa saya perlu ProxyHost?

Karena pembatasan keamanan dalam Javascript, tidak mungkin untuk mengambil informasi dari domain jauh melalui XMLHttpRequest.

Kelas-kelas seperti WFS dan GeoRSS menggunakan XMLHTTPRequest untuk mendapatkan data mereka. Jika mereka menanyakan server jarak jauh (selain mesin yang meng-host halaman Anda), Anda harus menginstal skrip proxy di suatu tempat yang dapat diakses web di mesin itu. Lihat di bawah ini untuk cara mengatur ProxyHost Anda sendiri.

Jika variabel OpenLayers.ProxyHost tidak diatur ke host proxy yang valid, permintaan dikirim langsung ke server jarak jauh. Dalam kebanyakan kasus, hasilnya akan menjadi pengecualian keamanan, meskipun pengecualian ini sering terjadi secara diam-diam. Bagaimana cara saya mengatur ProxyHost?

Contoh skrip host proxy tersedia di sini: trunk / openlayers / example / proxy.cgi

Untuk konfigurasi standar Apache, Anda akan menempatkan proxy.cgi ke direktori / usr / lib / cgi-bin / Anda.

Setelah skrip host proxy telah diinstal, Anda harus mengedit variabel OpenLayers.ProxyHost untuk mencocokkan URL itu.

Dengan konfigurasi Apache standar di atas:

OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";

Jika Anda telah melakukan sesuatu seperti ini, Anda harus dapat mengunjungi:

 http://YourDomain.example.com/cgi-bin/proxy.cgi

Konten yang dihasilkan di halaman tersebut haruslah situs web openlayers.org.

Jika Anda mendapatkan kesalahan 404 sebagai gantinya, skrip proksi tidak di lokasi yang benar, atau server web Anda tidak dikonfigurasi dengan benar.

Setelah Anda menyalin file proxy ke server Anda, jangan lupa mengedit allowedHostsarray.


Meskipun jawaban yang ada sudah cukup lama, saya merasa perlu ada jawaban yang lengkap, karena pertanyaan ini telah menjadi pertanyaan kanonik, dan banyak lainnya ditutup sebagai duplikatnya. Ini adalah usaha saya untuk menjawab pertanyaan ini, berdasarkan jawaban lain yang saya tulis di situs ini.

Devdatta Tengshe
sumber