【发布时间】:2019-12-09 07:20:22
【问题描述】:
我正在尝试在服务器上调用一个接受 OPTIONS 方法的 API,它在邮递员上运行并返回 json 对象,但以下代码不适用于 js
我已经读到 OPTIONS 调用是 CORS 调用的预检调用,所以这个 API 是 https 并且在另一台服务器上。但即使这样也没有响应,它返回 405 method not found
$.ajax({
url: url,
dataType: "jsonp",
method :"OPTIONS",
crossDomain: true,
contentType: 'application/json',
headers: {
"Content-type": "application/json",
"Cache-Control": "no-cache",
"Accept": "application/json,long_format",
"Access-Control-Allow-Origin": "*"
},
success: function (data) {
console.log("success" + data);
},
error: function (data) {
console.log("fail" + data);
}
}).fail(function(data) {
console.log("failed" + data);
});
额外信息:
该 API 是跨域且在 ssl 上,因此为了覆盖跨域请求,我必须使用用户 dataType: "jsonp"
更新:
这是不可能的场景,所以我必须在服务器端获取更新...
解释: 有一些问题 跨域背后的 OPTIONS 方法 对于我在互联网上进行的一些研究,可以通过以下方式访问 CORS 请求: 数据类型:“jsonp”, 但使用 -> dataType: "jsonp" 你只能调用 GET 方法 所以我们被困在这里,允许我们调用跨域 https 请求或者我们可以调用 OPTIONS 方法, 通常 OPTIONS 方法是由浏览器自动完成的预检方法
现在请停止为我的问题投票
【问题讨论】:
-
您是在尝试发出预检 OPTIONS 请求还是其他一些 OPTIONS 请求?
-
这是响应头,不是请求头
-
试图调用 OPTIONS 方法
-
您可能不想手动进行 OPTIONS 调用。浏览器应该自己做。关于 CORS 有很多关于 SO 的问题。
-
您正试图强制不接受 CORS 请求的服务器接受 CORS 请求。与服务提供商联系,了解如何访问他们的服务。
标签: javascript jquery ajax