安全-CORS发出IIS 8 Windows Server 2012

场景:
我有两个应用程序,一个是“ SPA Web应用程序”,另一个是“ Web API 2.0”,它部署在Windows Server 2012的IIS 8.0上.

错误:
网站可以访问并且可以在同一台机器上正常运行,但不能从外部访问,网页已正确加载,但是在对API进行ajax调用时会产生以下错误…

跨域请求被阻止:同源策略禁止读取远程资源.可以通过将资源移到同一域或启用CORS来解决此问题.

在控制器级别,我添加了以下属性:
[EnableCors(来源:“”,标题:“”,方法:“ *”,SupportsCredentials = true)]

还在WebApiConfig.cs中启用了它

public static void Register(HttpConfiguration config)
    {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "ActionApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional, action = "DefaultAction" }
            );

            config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
    }

web.config服务器配置是这样的.

<system.webServer>
   <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
   </handlers>
</system.webServer>  

以下是ajax调用的代码段.

$.ajax({
        type: 'get',  
        url: webApiUrl,
        success: function (response) {
            // some logic here
        },
        error: function (response) {
            // some logic here
        },
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true
    });

FURTHER DETAILS:

我已经在Windows Server 2008 R2的IIS 7.5上部署了相同的网站,并且运行正常,没有任何问题.

其次,我还尝试通过在IIS 8中添加以下响应标头.
访问控制允许标题-内容类型
访问控制允许方法-POST,GET,OPTIONS

还尝试更改web.config中的以下值

 至

到目前为止,这些都不对我有用.寻找进一步的帮助…

修复::那只是防火墙阻止了托管的Web api端口:(

最佳答案
只是防火墙阻止了托管的Web API端口

转载注明原文:安全-CORS发出IIS 8 Windows Server 2012 - 代码日志