AngularJS 对 Web API 的 OPTIONS 请求丢失
AngularJS OPTIONS request to Web API lost
我正在尝试从 AngularJS 向不同域上的 WebAPI 发出 post 请求。
$http({
method: 'POST',
url: 'http://www.test.com/api/app/controller',
data: postdata,
headers: {
'Content-Type': 'application/json'
}
})
.then(function(response) {
// Do stuff
}, function() {
// Show error
})
.finally(function() {
// Cancel loading indicator
});
我相信 Web API 已正确设置以处理 CORS 请求。如果我使用 Chrome 高级 REST 客户端发出 CORS OPTIONS 请求,则会返回正确的 headers 和 200 响应代码。
当我进行上面的 POST 调用时,会发出预检 OPTIONS 请求。这总是以 504 代码超时。我的 Application_BeginRequest 中的日志记录从未被命中(从 Chrome 插件调用时是这样)。
从 AngularJS 和 Chrome 插件调用有什么区别?两者都来自同一台机器 运行 并且 AngularJS 在本地主机上的应用程序中 运行ning。两次调用中都设置了相同的 headers。
这对我来说是一个愚蠢的错误。我正在回答这个问题(而不是删除)以防有人这样做。
我指的是包含拼写错误的服务:
url: 'http://www.test2.com/api/app/controller',
而不是:
url: 'http://www.test.com/api/app/controller',
我的 CORS 飞行前请求没有问题,只是从未到达正确的服务器。
我正在尝试从 AngularJS 向不同域上的 WebAPI 发出 post 请求。
$http({
method: 'POST',
url: 'http://www.test.com/api/app/controller',
data: postdata,
headers: {
'Content-Type': 'application/json'
}
})
.then(function(response) {
// Do stuff
}, function() {
// Show error
})
.finally(function() {
// Cancel loading indicator
});
我相信 Web API 已正确设置以处理 CORS 请求。如果我使用 Chrome 高级 REST 客户端发出 CORS OPTIONS 请求,则会返回正确的 headers 和 200 响应代码。
当我进行上面的 POST 调用时,会发出预检 OPTIONS 请求。这总是以 504 代码超时。我的 Application_BeginRequest 中的日志记录从未被命中(从 Chrome 插件调用时是这样)。
从 AngularJS 和 Chrome 插件调用有什么区别?两者都来自同一台机器 运行 并且 AngularJS 在本地主机上的应用程序中 运行ning。两次调用中都设置了相同的 headers。
这对我来说是一个愚蠢的错误。我正在回答这个问题(而不是删除)以防有人这样做。
我指的是包含拼写错误的服务:
url: 'http://www.test2.com/api/app/controller',
而不是:
url: 'http://www.test.com/api/app/controller',
我的 CORS 飞行前请求没有问题,只是从未到达正确的服务器。