我有一个AngularJS应用程序,我试图使用AJAX请求从IIS 8.5上运行的ASP.NET WebApi2应用程序中提取静态文件。类似于下面的例子 -
NG-包括= “HTTP://server/Content/icon.svg”
如果我在浏览器中导航到该URL,IIS很乐意将该文件作为静态文件提供。但是,当我使用AJAX请求时,Angular首先尝试OPTIONS请求,因为它是CORS请求,并且IIS抛出405方法不允许。
我尝试将这些标题添加到网站的静态内容文件夹中 -
然而这没有任何区别。此外,IIS服务器没有安装WebDAV,这是我所看到的可能导致问题的事情。
答案 0 :(得分:2)
我有一个带有虚拟目录的IIS站点,我从中提供静态文件。
为了从浏览器做CORS,我所做的是配置网站的“En tetes deréponsesHTTP”,英文应该是“HTTP Response Headers”。
在那里,我添加了一个名为“Access-Control-Allow-Origin”的新标题,其值为“*”。
从这时起,我可以在XHR中使用静态文件。
我的实际问题是将OpenStreetMap磁贴提供给文件:///c/xxx/index.html并且chrome中的错误是
来自原始“http://myhost”的图片已被跨源资源共享策略阻止加载:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点'null'访问。
答案 1 :(得分:1)
这适用于我在表单身份验证下访问子目录中的.png文件。您应该可以更改扩展名。
<?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>
如果您将OPTIONS
添加为Access-Control-Allow-Methods
的动词,请参阅this问题中的答案。
<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>
答案 2 :(得分:0)
如果您想在未经任何授权的情况下向公共Internet提供静态文件,则可以将CORS政体设置为:
Internet Information Server,可以为您的站点配置以下IIS配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Methods" value="GET,OPTIONS" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Max-Age" value="86400" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>