CORS 问题 IIS 8 Windows Server 2012

CORS issue IIS 8 Windows Server 2012

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

错误: 网站可以访问并且在同一台机器上工作正常但不能从外部访问,网页已正确加载但在 ajax 调用 API 时会生成以下错误...

Cross-Origin 请求被阻止:同源策略不允许读取位于 的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。

在控制器级别 我添加了以下属性: [EnableCors(来源:“”,headers:“”,方法:“*”,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 中添加以下响应 headers.. Access-Control-Allow-Headers - Content-Type Access-Control-Allow-Methods - POST,获取,选项

还尝试更改 web.config

中的以下值

到目前为止,

None 对我有用。寻求进一步的帮助...

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

只是防火墙阻止了托管网站 api 端口