【问题标题】:How to send OPTIONS Method call to server via ajax jquery/javascript?如何通过 ajax jquery/javascript 向服务器发送 OPTIONS 方法调用?
【发布时间】: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


【解决方案1】:
dataType: "jsonp",

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

crossDomain: true,

把这个拿出来。除非您发出 same origin 请求并将 重定向 成为跨源请求,否则它什么也不做。

contentType: 'application/json',

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

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

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

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

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

【讨论】:

  • 请求是跨域和 https 方法,没有它dataType: "jsonp 它给出了跨域策略问题
  • @ShahrukhAhmad — 然后您需要更改服务器以使用 CORS 授予您发出请求的权限。 JSONP只能通过 GET 请求生成。
  • 你的意思是不能手动制作?我从邮递员那里调用了这个 OPTIONS 方法,它返回了正确的结果。应该有一些方法可以从 ajax 调用它
  • 去阅读stackoverflow.com/a/35553666/19068,它解释了同源策略的要点。
猜你喜欢
  • 2017-01-26
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
相关资源
最近更新 更多