我注意到我的Angular也在每个POST请求之前创建OPTIONS请求。
我正在使用自定义API服务进行HTTP请求处理。
app.service('ApiService', function ($http) {
/**
* Process remote POST request to give URL with given params
* @param {String} url
* @param {String} POST params
* @return {JSON} response from server
*/
this.doHttpRequest = function (type, url, params) {
return $http({
method: type,
url: url,
data: params,
timeout: 5000,
headers: {
"Content-Type": "application/json",
}
});
}
});
问题是:
我如何禁用它(哪些配置值放在哪里)?
选项是好的东西吗?我想那是像“两个服务器之间的握手”这样的东西。
Angular 版本:1.2.15年月
谢谢你的建议。
2条答案
按热度按时间qlvxas9a1#
这不是Angular,而是XMLHttpRequest。
复杂的跨源HTTP请求需要一个pre-flight OPTIONS请求,这样浏览器就可以知道其他服务器是否会为 AJAX 请求授予权限。
如果不能确保所发出的 AJAX 请求是简单的,就无法阻止OPTIONS请求。
一个简单的请求:
除非您希望给予发送JSON,否则不能使用简单的请求。
0sgqnhkj2#
我遇到了一个非常接近的情况,需要通过跨站点HTTP请求获取JSON,并通过使用jQuery请求而不是angularjs修复了这个问题
我使用了Amazon S3 CDN,OPTIONS请求不能很好地与之配合,所以这救了我。S3服务器的回答是:
此分发未配置为允许用于此请求的HTTP请求方法。此分发仅支持可缓存的请求。