为什么我不能对IIS中托管的API发出跨源请求?

时间:2013-06-21 11:01:27

标签: asp.net-mvc-4 azure asp.net-web-api azure-web-sites

我有一个使用IISExpress在本地运行的ASP.NET WebApi应用程序,它允许我接受来自任何域的请求。我使用与DelegatingHandler提供的'Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.'类似的{{1}}来执行此操作。

本地运行完美但是在上传到Azure网站后,我得到了Chrome下的典型{{1}}。

我尝试通过在没有输出的情况下将跟踪语句添加到Handler中来调试它,似乎从不执行SendAsync,几乎就像IIS响应OPTIONS请求而不是将其传递给我的应用程序。 / p>

有没有人遇到过从开发到生产的任何类似的事情?

1 个答案:

答案 0 :(得分:3)

IIS(包括Azure网站中的一个)具有默认的OPTIONS处理程序。您需要在Web.config中删除它。它会在您的消息处理程序有机会响应之前回答OPTIONS调用。

<configuration>
  ...
  <system.webServer>
    <handlers>
      <remove name="OPTIONSVerbHandler" />
      ...
    </handlers>
  </system.webServer>
</configuration>