繁体   English   中英

如何通过 ajax jquery/javascript 向服务器发送 OPTIONS 方法调用?

[英]How to send OPTIONS Method call to server via ajax jquery/javascript?

我正在尝试调用一个在服务器上接受 OPTIONS 方法的 API,它在邮递员上运行并返回 json 对象,但以下代码在 js 上不起作用

我已经读过 OPTIONS 调用是对 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"

更新 :

这是不可能的情况,所以我必须在服务器端获取更新......

说明: OPTIONS 方法存在一些问题,它在跨域以及我在互联网上所做的一些研究的 a/c 后面,可以使用以下方式访问 CORS 请求:dataType:“jsonp”,但使用 -> dataType:“jsonp”您只能调用 GET 方法,所以我们被困在这里,允许我们调用跨域 https 请求或我们可以调用 OPTIONS 方法,通常 OPTIONS 方法是浏览器自动完成的预检方法

现在请停止投票我的问题

dataType: "jsonp",

把这个拿出来。 JSONP 请求始终是GET 请求。 这是你的主要问题。

 crossDomain: true,

把这个拿出来。 除非您发出一个被重定向为跨源请求的同源请求,否则它什么都不做。

 contentType: 'application/json',

把这个拿出来。 您正在提出 OPTIONS 请求。 没有描述内容类型的请求正文。

 "Content-type": "application/json",

把这个拿出来。 出于同样的原因。

 "Access-Control-Allow-Origin": "*"

把这个拿出来。 它是一个响应头,在请求中没有位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM