【发布时间】:2016-04-04 19:25:36
【问题描述】:
我正在使用 Web API 2。在我的 WebApiConfig 中,我有这个。
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 config 中,以及围绕 Stack overflow 发布的其他方法。我不明白为什么它被拒绝了?
前端是 Angular,使用 Ngresource 处理请求。
如果我在 chrome 开发工具中使用网络选项卡,对请求的响应是 200 OK,之后没有其他任何反应。整天都在寻找解决方案,到目前为止我尝试过的任何方法都没有奏效。
谢谢。
【问题讨论】:
-
在这里找到更多细节...asp.net/web-api/overview/security/…
标签: javascript angularjs asp.net-web-api cors