【发布时间】:2016-02-05 08:32:40
【问题描述】:
我有一个前端 Web 应用程序,它在服务器上使用 nodejs,在客户端使用 angularjs,在端口 5000 上本地运行。客户端代码需要向也在本地运行但托管在不同端口上的单独 Web API 服务发出 ajax 请求在 IIS 6.2 中。这使它成为一个跨域请求,浏览器正试图为此发出预检请求。但是,预检失败并调用了 ajax 错误处理程序,响应的状态代码为 -1,Chrome 控制台显示预检检查失败,可能是 对预检请求的响应的标准错误消息没有通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'https://localhost:5000' 不允许访问。响应的 HTTP 状态代码为 500。
据我所知,我的 Web API 服务中启用了 CORS。这是我的 Application_Start 方法的最开始:
var corsAttr = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(corsAttr);
config.MapHttpAttributeRoutes();
// etc...
这个精确的设置在我同事的机器上运行良好,所以我的机器特别有问题。我被难住了,对可能发生的事情有什么想法吗?我猜是某处配置错误。
【问题讨论】:
-
您在预检请求中的响应是什么?你的域名有 Access-Control-Allow-Origin 吗?
标签: angularjs asp.net-web-api2 iis-6 preflight