IIS Express 8没有使用VS2013 Dev发送Access-Control-Allow-Origin

时间:2014-12-24 15:21:04

标签: asp.net asp.net-web-api cors iis-express

我在IIS8中使用VS2013。我的应用程序访问不同IP上的服务器以进行登录。我成功地从运行Webstorm的另一个Windows框进行访问。现在我的应用程序在VS2013中运行,我收到此错误:

XMLHttpRequest无法加载http://example.com/Token。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许来源“http://localhost:2757”。响应的HTTP状态代码为500。

我尝试将以下内容添加到我的网络配置以及IIS Express配置文件中:

的web.config

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

对ApplicationHost.config

    <httpProtocol>
        <customHeaders>
            <clear />
            <add name="X-Powered-By" value="ASP.NET" />
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="Content-Type" />
        </customHeaders>
        <redirectHeaders>
            <clear />
        </redirectHeaders>
    </httpProtocol>

我仍然得到同样的信息。

有没有人对如何解决这个问题有任何想法。另外,如何通过查看Fiddler来设置Access-Control-Allow_Headers?

1 个答案:

答案 0 :(得分:0)

我有一个正在运行的web api项目,可以接受所有类型的标头,请求,cors也启用等,可以从任何地方调用。虽然我还没有在IIS服务器上部署我的项目,但到目前为止它在localhost上成功运行了我。

试试这个。可能它会解决你的问题。

我假设你在VS 2013上创建的项目是一个web api项目。

请按以下步骤操作: -

1)在您的web api项目中打开nuget包管理器控制台。

2)键入Install-Package Microsoft.AspNet.WebApi.Cors并安装

3)成功后,键入Update-Package Microsoft.AspNet.WebApi并安装它。

4)检查你的web.config文件是否有以下条目,然后删除/评论     它们。

add name =&#34; Access-Control-Allow-Origin&#34;值=&#34; *&#34;

add name =&#34; Access-Control-Allow-Headers&#34;值=&#34; *&#34;

添加名称=&#34;访问控制 - 允许 - 方法&#34; value =&#34; GET,POST,PUT,DELETE,OPTIONS&#34;

5)现在来到您的控制器文件并导入命名空间。使用System.Web.Http.Cors;

6)现在在控制器级别输入[EnableCors(起源:&#34; &#34;,标题:&#34; &#34;,方法:&#34; * &#34;)]允许控制器接受所有类型的起源,标题和方法。

到目前为止,这对我有用。