Problema no CORS ArcGIS 10.1 IIS (compartilhamento de recursos de origem cruzada)

11

Eu tenho o ArcGIS 10.1 instalado com o adaptador da web para o IIS. Adicionei um arquivo de configuração à raiz do IIS7 para habilitar o CORS (Cross Origin Resource Sharing) conforme esta página. Coloquei o servidor ArcGIS habilitado para cors na lista de servidores cors padrão, conforme esta página:

esri.config.defaults.io.corsEnabledServers.push("vmagstenone")). 

No entanto, quando meu aplicativo JavaScript hospedado no vmagsten faz uma solicitação ao servidor GIS (vmagstenone), recebo o erro

"Origin http://vmagsten is not allowed by Access-Control-Allow-Origin.". 

Editar: E a camada do recurso falha ao carregar. Eu também tentei carregar uma camada dinâmica e isso também falha com o mesmo erro _557 (veja a imagem)

Editar: eu não deveria estar vendo esse erro, pois as etapas acima devem significar que o servidor oferece suporte à origem cruzada. Esta declaração da esri de que esse erro pode ser ignorado não se aplica nesse caso, pois esse servidor deve suportar cors. Isso significa que o primeiro erro no servidor ESRI pode ser ignorado.

insira a descrição da imagem aqui!

Editar: aqui está um exemplo de resposta de uma consulta nessa camada, mostrando que a resposta tem acesso-controle-permissão-origem

insira a descrição da imagem aqui!

David Wilton
fonte
3
Você pode definir o CORS, para que fique claro que estamos falando sobre compartilhamento de recursos entre origens e não sobre uma estação de referência em operação contínua , usada para GPS.
precisa saber é o seguinte
2
Você certificou-se de que seu IIS esteja retornando os cabeçalhos necessários para o CORS?
Devdatta Tengshe
@DevdattaTengshe Eu editei o post acima
David Wilton

Respostas:

4

Você mencionou que recebeu o erro, mas o serviço realmente falha ao carregar?

Eu pergunto, quando vi este post nos fóruns da Esri, que afirma:

Este erro pode ser ignorado com segurança. Há casos em que a API não envia uma solicitação para // rest / info e é a seguinte: O navegador não suporta CORS O servidor já está listado em esri.config.defaults.io.corsEnabledServers esri.config.defaults.io .corsDetection é false JSON é usado em vez de JSONP nos seguintes casos: O recurso que está sendo buscado está no mesmo domínio que o aplicativo O recurso que está sendo buscado está em um servidor que suporta CORS

Estou assumindo que isso acontece em outros consoles do navegador também?

Caso contrário, você pode lançar um log do Fiddler ou um arquivo .HAR on-line em algum lugar (ou me enviar um e-mail) e editar esta resposta adequadamente.

Simon
fonte
Desculpe, eu deveria ter mencionado que vi isso. O serviço falha ao carregar. Vou postar o erro do Firefox. Ele não falha no IE
David Wilton
Eu acho que você provavelmente está certo de que os dois primeiros erros devem ser ignorados, pois a ESRI diz que isso é esperado. No entanto, o erro _557 proveniente da estrutura parece ser o problema. Eu recebo o mesmo erro na versão 3.3 e 3.4
David Wilton
1
Eu também tentei usar uma camada dinâmica em vez de uma camada de recurso e que tem o mesmo problema. Se o site estiver hospedado no mesmo servidor que os dados, não haverá erros. Usando chrome.exe --disable-web-security (não imponha a política de cors), as solicitações são aceitáveis. Isso é o que me leva a acreditar que é um problema com a Coors e o pedido.
David Wilton
2

Embora a resposta contenha um Access-Control-Allow-Origin: *cabeçalho, ela também contém X-Frame-Options: SAMEORIGINe X-XSS-Protection: 1; mode=blockcabeçalhos. Estes são cabeçalhos de prefixo X, que não são padrão , por isso não tenho 100% de certeza se o seu navegador os está honrando sobre o cabeçalho de permissão.

Você pode usar uma ferramenta como o Fiddler para adicionar e remover cabeçalhos das solicitações do navegador; isso pode ajudá-lo a rastrear o que está acontecendo.

mwalker
fonte
2

Aqui está o que funcionou para mim no IIS 8.0. Isso pode ser diferente em outras versões do IIS.

Remova o arquivo customHeadersdo diretório raiz do site web.configou exclua-o web.configcompletamente.

Em seguida, alterne para ApplicationHost.configno Gerenciador de configuração do IIS do arcgisaplicativo e adicione Access-Control-Allow-Originnome e *valor ao arquivo customHeaders.

Editor de configuração do IIS 8.0

CustomHeaders

nickpeihl
fonte
1

Não estou familiarizado com o compartilhamento de recursos entre origens.
Eu uso a política entre domínios.
política entre domínios
Você tem isso configurado também?

Brad Nesom
fonte
1
Sim, tenho os arquivos crossdomain.xml clientaccesspolicy.xml configurados pela instalação do servidor ArcGIS. No entanto, entendo que esses arquivos estejam relacionados aos aplicativos Flex e silverlight (link). Vou editar questão de deixar claro que eu estou falando sobre JS única resources.arcgis.com/en/help/install-guides/arcgis-server/10.1/...
David Wilton
1

O que finalmente funcionou para mim foi adicionar o seguinte ao site ROOT e NÃO o aplicativo para o adaptador da web . Isso faz sentido? Não para mim. Mas funcionou para mim.

EDIT: Isso deve ir no arquivo proxy DotNet chamado Web.config.

<configuration>
  <...rest of file...>
    <system.webServer>
      <httpProtocol>
       <customHeaders>
         <add name="Access-Control-Allow-Origin" value="*" />
       </customHeaders>
      </httpProtocol>
    </system.webServer>
  </...rest of file...>
</configuration>

insira a descrição da imagem aqui

CaptDragon
fonte
ESTA foi a resposta que funcionou para mim ... Estou editando sua resposta para esclarecer o que precisa ser ajustado.
randomblink