Problema CORS ArcGIS 10.1 IIS (Cross Origin Resource Sharing)

11

Tengo ArcGIS 10.1 instalado con el adaptador web para IIS. Agregué un archivo de configuración a la raíz de IIS7 para habilitar Cross Origin Resource Sharing (CORS) según esta página. He incluido el servidor ArcGIS habilitado para cors en la lista de servidores predeterminados de cors según esta página:

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

Sin embargo, cuando mi aplicación JavaScript que está alojada en vmagsten hace una solicitud al servidor SIG (vmagstenone) me sale el error

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

Editar: Y la capa de entidades no se carga. También he intentado cargar una capa dinámica y esto también falla con el mismo error _557 (ver imagen)

Editar: no debería ver este error, ya que los pasos anteriores deberían significar que el servidor admite el origen cruzado. Esta declaración de esri de que se puede ignorar este error no se aplica en este caso ya que este servidor debería admitir cors. Significa que se puede ignorar el primer error al servidor ESRI.

ingrese la descripción de la imagen aquí!

Editar: aquí hay una respuesta de muestra de una consulta en esta capa que muestra que la respuesta tiene Access-Control-Allow-Origin

ingrese la descripción de la imagen aquí!

David Wilton
fuente
3
Es posible que desee definir CORS, para que quede claro que estamos hablando de Cross Origin Resource Sharing y no una Estación de referencia de funcionamiento continuo , que se utiliza para GPS.
Kirk Kuykendall
2
¿Se ha asegurado de que su IIS devuelva los encabezados necesarios para CORS?
Devdatta Tengshe
@DevdattaTengshe He editado la publicación anterior
David Wilton

Respuestas:

4

Usted menciona que obtiene el error, pero ¿el servicio realmente no se carga?

Pregunto, cuando vi esta publicación en los foros de Esri que dice:

Este error puede ignorarse con seguridad. Hay casos en los que la API no enviará una solicitud a // rest / info y son los siguientes: El navegador no es compatible con CORS. El servidor ya figura en esri.config.defaults.io.corsEnabledServers esri.config.defaults.io .corsDetection es falso Se usa JSON en lugar de JSONP en los siguientes casos: El recurso que se busca está en el mismo dominio que la aplicación El recurso que se busca está en un servidor que admite CORS

¿Supongo que también sucede en otras consolas de navegador?

De lo contrario, ¿puede lanzar un registro de Fiddler o un archivo .HAR en línea en algún lugar (o enviarlo por correo electrónico), y editaré esta respuesta en consecuencia.

Simón
fuente
Lo siento, debería haber mencionado que vi eso. El servicio no se carga. Publicaré el error de Firefox. No falla en IE
David Wilton
Creo que probablemente tenga razón en que los dos primeros errores deben ignorarse ya que ESRI dice que se esperan. Sin embargo, el error _557 proveniente del marco parece ser el problema. Me sale el mismo error en la versión 3.3 y 3.4
David Wilton
1
También he intentado usar una capa dinámica en lugar de una capa de entidades y eso tiene el mismo problema. Si el sitio está alojado en el mismo servidor que los datos, no hay errores. Usando chrome.exe --disable-web-security (no aplique la política de cors) las solicitudes están bien. Esto es lo que me lleva a creer que es un problema con Coors y la solicitud.
David Wilton
2

Mientras que la respuesta contiene una Access-Control-Allow-Origin: *cabecera, sino que también contiene X-Frame-Options: SAMEORIGINy X-XSS-Protection: 1; mode=blockcabeceras. Estos son encabezados de prefijo X, que no son estándar , por lo que no estoy 100% seguro de que su navegador los cumpla con el encabezado de permiso.

Puede usar una herramienta como Fiddler para agregar y eliminar encabezados de las solicitudes del navegador; Esto podría ayudarlo a rastrear lo que está sucediendo.

mwalker
fuente
2

Esto es lo que funcionó para mí en IIS 8.0. Esto puede ser diferente en otras versiones de IIS.

O bien eliminar el customHeadersen el directorio raíz del sitio web web.configde archivos o borrar el web.configarchivo completamente.

Luego cambie a ApplicationHost.configen el Administrador de configuración de IIS para la arcgisaplicación y agregue Access-Control-Allow-Originnombre y *valor al customHeaders.

Editor de configuración de IIS 8.0

CustomHeaders

nickpeihl
fuente
1

No estoy familiarizado con el intercambio de recursos de origen cruzado.
Yo uso la política de dominio cruzado.
política de dominio cruzado
¿Tienes eso configurado también?

Brad Nesom
fuente
1
Sí, tengo los archivos crossdomain.xml clientaccesspolicy.xml configurados por la instalación del servidor ArcGIS. Sin embargo, tengo entendido que estos archivos se relacionan con aplicaciones Flex y Silverlight (enlace). Editaré la pregunta para dejar en claro que estoy hablando solo de JS resources.arcgis.com/en/help/install-guides/arcgis-server/10.1/…
David Wilton
1

Lo que finalmente funcionó para mí es agregar lo siguiente al sitio ROOT y NO la aplicación para el adaptador web . ¿Tiene sentido? No para mí. Pero funcionó para mí.

EDITAR: Esto debería ir en el archivo proxy DotNet llamado 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>

ingrese la descripción de la imagen aquí

CaptDragon
fuente
ESTA fue la respuesta que funcionó para mí ... Estoy editando su respuesta para aclarar lo que debe ajustarse.
randomblink