/ / ¿Cómo servir archivos estáticos (para solicitud CORS / OPTION) en IIS? - angularjs, iis, cors, asp.net-web-api2, iis-8.5

¿Cómo servir archivos estáticos (para solicitud CORS / OPTION) en IIS? - angularjs, iis, cors, asp.net-web-api2, iis-8.5

Tengo una aplicación AngularJS que estoy tratando de usar una solicitud AJAX para extraer un archivo estático de una aplicación ASP.NET WebApi2 que se ejecuta en IIS 8.5. Similar al ejemplo a continuación:

ng-include = "http: //server/Content/icon.svg"

Si navego a esa URL en el navegador, IISfelizmente sirve ese archivo como un archivo estático. Sin embargo, cuando uso una solicitud AJAX, Angular intenta primero una solicitud OPTIONS, ya que es una solicitud CORS, e IIS arroja un Método 405 no permitido.

He intentado agregar estos encabezados a la carpeta de contenido estático en el sitio web.

Encabezados

Sin embargo, esto no hizo ninguna diferencia. Además, el servidor IIS no tiene instalado WebDAV, que es algo que he visto como algo que podría causar problemas.

Respuestas

2 para la respuesta № 1

Tenía un sitio IIS con un directorio virtual desde el cual sirvo mis archivos estáticos.

Para hacer CORS desde el navegador, lo que hice fue configurar los "Entetes de réponses HTTP" del sitio, que en inglés debería ser algo así como "Encabezados de respuesta HTTP".

Allí agregué un nuevo encabezado llamado "Access-Control-Allow-Origin" con el valor "*".

Desde este momento, puedo usar archivos estáticos en XHR.

Mi problema real era servir los mosaicos de OpenStreetMap en un archivo: ///c/xxx/index.html y el error en Chrome era

Imagen de origen "http://myhost"se ha bloqueado la carga por la política de intercambio de recursos de origen cruzado: no hay encabezado" Access-Control-Allow-Origin "en el recurso solicitado. Por lo tanto, el origen" nulo "no tiene acceso permitido.


0 para la respuesta № 2

Esto funciona para mí para acceder a archivos .png en un subdirectorio bajo autenticación de formularios. Debería poder cambiar la extensión.

<?xml version="1.0" encoding="utf-8"?>
<configuration>

<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>

<system.webServer>
<staticContent>
<mimeMap fileExtension=".*" mimeType="image/png" />
</staticContent>
<handlers>
<clear />
<add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
</handlers>
</system.webServer>

</configuration>

¿Qué pasa si agrega el OPTIONS como un verbo para el Access-Control-Allow-Methods Como se responde en esta pregunta.

 <system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>