Javascript 不允许使用选项方法,CORS到Google驱动器

Javascript 不允许使用选项方法,CORS到Google驱动器,javascript,jquery,cors,google-docs,Javascript,Jquery,Cors,Google Docs,我已经为一个发布到的google驱动器创建了一个脚本 我引用它的时候 var request = $.ajax({ url: "https://script.google.com/macros/s/AKfycbypnRet5l6gUmoGE8oZV2_6da7fImNU12ejHCHCdOambH7UM2CP/exec", data: serializedData, type: "POST", tim

我已经为一个发布到的google驱动器创建了一个脚本

我引用它的时候

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

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

无法加载XMLHttpRequest . 请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,不允许使用源“” 通道响应的HTTP状态代码为405

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

Request Method:OPTIONS
然而,对于jsFiddle中的一个,它是按预期发布的。我做了一些研究,在做跨原点时,选项似乎是飞行前的请求,我不能让它直接使用post

非工作选项请求具有以下不在工作小提琴请求中的标题:

access-control-request-headers:accept, content-type
access-control-request-method:POST
如果我将相同的请求发布到我的服务器(而不是Google),我会看到它包含请求头
内容类型:application/json;字符集=UTF-8


当不允许使用options方法时,JSFIDLE是如何通过的?我是否可以让它跳过选项并直接转到post?

当请求是非简单的时,会发生飞行前选项请求,这可能是由非简单标头或非简单HTTP方法引起的

accesscontrolrequestheaders:accept,content-type
头表示您正在尝试发送非简单头
Accept
总是简单的,但是
内容类型
只有在其值为
application/x-www-form-urlencoded
多部分/表单数据
text/plain
时才简单。您的代码(无论出于何种原因)试图对
内容类型使用非简单值,而Google没有提供
访问控制允许标头
响应标头来允许


相反,您必须为
内容类型
指定一个简单值。您可以通过向$.ajax选项对象添加一个显式的
contentType:“application/x-www-form-urlencoded;charset=UTF-8”
属性来完成此操作。

在发送请求之前执行此操作有效?$。support.cors=true;在我看来,没有什么区别。仍然收到相同的错误。是否尝试在没有端口3000的情况下运行此操作?同时,我正在考虑一些解决方案,如果不指定端口号,我就无法在本地运行服务器。但是,我尝试将它部署到一个测试环境中,但url中没有端口号,并且收到了相同的错误。谢谢你的帮助。