您好,我在 jquery 中的 AJAX 发布请求有问题,因为它会生成两个请求,一个是 POST,另一个是 OPTIONS,我不知道从长远来看这是否会成为问题,或者 API 是否会混淆。
为什么那个 OPTIONS 请求总是出现?可以去掉吗?
$.post("http://127.0.0.1:8000/newClient/", {
data: JSON.stringify(validData),
}, function (response) {
var r = JSON.parse(response);
if (r.status != 200) {
$('#err').html(r.content).css('color', 'red');
}
else {
$('#err').remove();
}
})
API 在 Django 中,这些是它为我生成的响应标头。
POST 标头
选项标题
这称为请求
preflighted
,这不是问题,它是浏览器向您的服务器发出的请求,以验证您尝试发出的请求是否安全。为什么?
发送此请求的原因是因为您尝试向
POST
另一个域 (CORS
)发出请求127.0.0.1:8000
。因此,chrome 发出请求
preflighted
以检查它是否http://127.0.0.1:8000
允许对该域的请求。概括
由于此请求是出于安全原因由浏览器发出的,因此这是非常合理的。
而且它不会改变原始请求,您在响应中收到的数据将是您所期望的。