我已经使用过AngularJS中的一些以前的API,但是始终使用OPTIONS
方法进行预检。现在我正在从头开始构建一个新的API,出于某种原因,AngularJS不会发送预检请求。
根据我的经验,AngularJS在使用CORS
时总是发送预检,但不是我的情况。所以问题是,如果AngularJS中没有请求与AngularJS不同的域进行托管,是什么触发了AngularJS的预检?
我的例子很简单,看起来像这样:
$scope.submit = function () {
$http.post('https://slimapi.devz/')
.then(function successCallback(response){
alert(response.data);
}, function errorCallback(response) {
console.log(response);
});
}
请求网址为https://slimfrontend.devz/
。
Chrome由XHR
中的响应标头使用POST
方法触发,并且不会显示结果,但是会提取结果(如时间轴中所示)。但同样,没有OPTIONS
预检的迹象。
以下是我的请求的图片,正如您可以通过箭头看到的那样。 Chrome确实检测到了原点的不匹配。
答案 0 :(得分:5)
特别是,如果满足以下任一条件,则会预检请求:
(我解释下面的其余部分)
Content-Type
不是HTML enctype
的{{1}}属性的有效值 IIRC,Angular默认发送<form>
个有效负载(触发上述最终条件)。
你的例子是一个POST请求,你没有发布任何数据(这是奇怪的),因此没有Content-Type。