我正在尝试调用在服务器上接受选项方法的API,它在Postman上运行并返回JSON对象,但是以下代码不适用于JS
我读过,选项调用是CORS呼叫的飞行前调用,因此此API是HTTPS,并且在另一台服务器上。但是即使那样,也没有响应,它返回405方法
也找不到。 $.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"
更新:
这是不可能的方案,因此我必须在服务器端进行更新...
说明:有一些问题跨域背后的选项方法A/C我在互联网上进行的一些研究,可以访问CORS请求:数据类型:" JSONP",但是 -> datatype:" jsonp"您只能致电获取方法因此,我们被困在这里,允许我们调用跨域https请求,或者我们可以调用选项方法,通常,选项方法是浏览器自动完成的飞行前方法
现在,请停止投票
dataType: "jsonp",
将其取出。JSONP请求始终获取请求。这是您的主要问题。
crossDomain: true,
将其取出。除非您提出重定向作为交叉来源请求,否则它无能为力。
。contentType: 'application/json',
将其取出。您正在提出选项请求。没有请求主体来描述。
的内容类型"Content-type": "application/json",
将其取出。出于同样的原因。
"Access-Control-Allow-Origin": "*"
将其取出。它是响应标题,在请求中没有位置。