Cors不在同一台服务器上发布API

时间:2015-12-30 19:32:15

标签: javascript angularjs asp.net-web-api cors

我在WebApiConfig中使用Web API 2.我有这个。

   private static void EnableCrossSiteRequests(HttpConfiguration config)
    {
        var origin = WebConfigurationManager.AppSettings["origin"];
        var cors = new EnableCorsAttribute(

            origins: "*",
            headers: "*",
            methods: "*");
        config.EnableCors(cors);
    }

注册方法

        public static void Register(HttpConfiguration config)
    {

        config.MapHttpAttributeRoutes();
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

        EnableCrossSiteRequests(config);

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.Filters.Add(new ErrorHandler());
    }

从我的理解不应该是我需要的所有工作吗?当它们一起托管时,它在我的开发计算机上工作。但现在一个在Web服务器上,API在不同的Web服务器上。

我收到了 - Origin ...在Access-Control-Allow-Origin标头中找不到。

我设置允许所有Origin。我已经尝试在web配置中添加它,并在Stack溢出周围发布其他方法。我不明白为什么会被拒绝?

前端是Angular,使用Ngresource来处理请求。

如果我在chrome dev工具中使用Network选项卡,对请求的响应是200 OK,之后没有其他任何事情发生。一整天都在寻找解决方案,到目前为止我所做的一切都没有效果。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

从我的理解不应该是我需要的所有工作吗?

不。您应该使用file属性修饰您希望调用跨域的Web API控制器/操作:

[EnableCors]

这是关于此主题的good read