gpt4 book ai didi

javascript - 不允许选项方法,CORS 到 Google 云端硬盘

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:45:01 25 4
gpt4 key购买 nike

我已经为一个发布到 this document 的谷歌驱动器创建了一个脚本.

我调用它

var request = $.ajax({
url: "https://script.google.com/macros/s/AKfycbypnRet5l6gUmoGE8oZV2_6da7fImNU12ejHCHCdOambH7UM2CP/exec",
data: serializedData,
type: "POST",
timeout: 10000,
async: true,
crossDomain: true
});

this jsFiddle 开始工作.

但是,当我在我的本地项目中实现完全相同的代码时,它不起作用。我收到了

XMLHttpRequest cannot load https://script.google.com/macros/s/AKfycbypnRet5l6gUmoGE8oZV2_6da7fImNU12ejHCHCdOambH7UM2CP/exec. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 405.

405 是“不允许的方法”,当我检查网络流量时,我发现对于我的本地请求,方法是

Request Method:OPTIONS

但是,对于 jsFiddle 中的那个,它是按预期发布的。我做了一些研究,似乎 options 是在进行跨源时的预检请求,我不能让它直接使用 post。

非工作 OPTIONS 请求具有以下不在工作 Fiddle 请求中的 header :

access-control-request-headers:accept, content-type
access-control-request-method:POST

如果我将相同的请求发布到我的服务器(而不是 Google),我会看到它包含请求 header Content-Type:application/json; charset=UTF-8.

jsFiddle 是怎么打通的,options 方法是不允许的?我能以某种方式让它跳过选项并直接发帖吗?

最佳答案

Preflight OPTIONS 请求在请求不简单时发生,由非简单 header 或非简单 HTTP 方法引起。

access-control-request-headers: accept, content-type header 意味着您正在尝试发送非简单 header 。 Accept 总是简单的,但是 Content-Type 只有当它的值为 application/x-www-form-urlencoded 时才简单,multipart/form-datatext/plain。一定是您的代码(无论出于何种原因)尝试为 Content-Type 使用非简单值,而 Google 未提供 Access-Control-Allow-Headers 允许它的响应 header 。

相反,您必须为 Content-Type 指定一个简单的值。您可以通过向 $.ajax 选项对象添加显式 contentType: "application/x-www-form-urlencoded; charset=UTF-8" 属性来实现。

关于javascript - 不允许选项方法,CORS 到 Google 云端硬盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com