Quando preciso usar um proxy com o OpenLayers2?

8

Quando exatamente eu preciso usar um proxy com openlayers? Eu li muito sobre isso, mas não consigo encontrar uma resposta definitiva. Querendo saber se este é o caminho dos meus problemas.

Por exemplo, se eu tiver um servidor executando o Geoserver (WFS) na porta 8080 e o Apache (servindo OpenLayers) na porta 80, precisaria usar um proxy?

Se os servidores estiverem fisicamente separados, eu precisaria usar proxy?

user8262
fonte

Respostas:

8

Você precisa de um proxy se estiver fazendo uma solicitação AJAX para uma máquina e / ou porta diferente daquela em que sua página da web foi veiculada.

Portanto, nos dois exemplos acima, você precisará de um proxy (no servidor que está servindo a página da Web) se desejar fazer solicitações de informações do WMS ou qualquer tipo de solicitação do WFS. No entanto, você não precisa de um proxy para solicitações simples do WMS getMap.

Ian Turton
fonte
Obrigado - isso faz sentido. Vou ter um problema com a configuração do proxy!
user8262
3

pls leia aqui .

Por que preciso de um ProxyHost?

Devido a restrições de segurança em Javascript, não é possível recuperar informações de domínios remotos por meio de um XMLHttpRequest.

Classes como WFS e GeoRSS usam XMLHTTPRequest para obter seus dados. Se eles estiverem consultando um servidor remoto (qualquer coisa que não seja a máquina que hospeda sua página), você deve instalar um script proxy em algum lugar da Web acessível nessa máquina. Veja abaixo como configurar seu próprio ProxyHost.

Se a variável OpenLayers.ProxyHost não estiver configurada para um host proxy válido, as solicitações serão enviadas diretamente aos servidores remotos. Na maioria dos casos, o resultado será uma exceção de segurança, embora essa exceção ocorra frequentemente silenciosamente.

espero que ajude você ...

Aragão
fonte
2

Quando o JavaScript foi desenvolvido, não se imaginava que ele tivesse um uso tão amplo e, portanto, foram feitas muitas suposições durante seu desenvolvimento, que se tornaram problemáticas hoje.

Quando a Microsoft projetou o XMLHttpRequestnavegador Internet Explorer, ele foi projetado com uma grande limitação.

O XMLHttpRequestnão permite que você faça diretamente uma solicitação para outro servidor. Até dois servidores rodando na mesma máquina, mas portas diferentes têm essa limitação.

O que você precisa fazer é ter um proxy cgi no servidor da web apache (porta 80) e usar o OpenLayers.ProxyHost para apontar para ele.

O site OpenLayers tem uma resposta de perguntas frequentes para este problema :

Por que preciso de um ProxyHost?

Devido a restrições de segurança em Javascript, não é possível recuperar informações de domínios remotos por meio de um XMLHttpRequest.

Classes como WFS e GeoRSS usam XMLHTTPRequest para obter seus dados. Se eles estiverem consultando um servidor remoto (qualquer coisa que não seja a máquina que hospeda sua página), você deve instalar um script proxy em algum lugar da Web acessível nessa máquina. Veja abaixo como configurar seu próprio ProxyHost.

Se a variável OpenLayers.ProxyHost não estiver configurada para um host proxy válido, as solicitações serão enviadas diretamente aos servidores remotos. Na maioria dos casos, o resultado será uma exceção de segurança, embora essa exceção ocorra frequentemente silenciosamente. Como faço para configurar um ProxyHost?

Um exemplo de script de host proxy está disponível aqui: trunk / openlayers / examples / proxy.cgi

Para a configuração padrão do Apache, você colocaria proxy.cgi em seu diretório / usr / lib / cgi-bin /.

Depois que um script de host proxy for instalado, você deverá editar a variável OpenLayers.ProxyHost para corresponder a esse URL.

Dada a configuração padrão do Apache acima:

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

Se você fez algo assim, deve poder visitar:

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

O conteúdo resultante nessa página deve ser o site openlayers.org.

Se você receber um erro 404, o script do proxy não está no local correto ou o servidor da Web não está configurado corretamente.

Depois de copiar o arquivo proxy para o servidor, não se esqueça de editar a allowedHostsmatriz.


Embora as respostas existentes sejam bastante antigas, sinto que precisa haver uma resposta exaustiva, pois essa pergunta se tornou uma pergunta canônica e muitas outras estão fechadas como duplicata. Esta é minha tentativa de responder a essa pergunta, com base em outras respostas que escrevi neste site.

Devdatta Tengshe
fonte