我有一个错误报告信标我使用Google Apps脚本创建,它发布为我自己运行,并且"任何人,甚至匿名"都可以访问,这应该意味着允许向GAS发送X域请求.
但是,我的浏览器现在指示Access-Control-Allow-Origin代码发布到信标后响应上没有标头.
我在这里错过了什么吗?这曾经是两个月前的工作.只要GAS发布用于公共访问,那么就是设置Access-Control-Allow-Origin标题.
在Google Apps脚本中:
Code.gsfunction doPost(data){
if(data){
//Do Something
}
return ContentService.createTextOutput("{status:'okay'}", ContentService.MimeType.JSON);
}
Run Code Online (Sandbox Code Playgroud)
客户端:
的script.js$.post(beacon_url, data, null, "json");
Run Code Online (Sandbox Code Playgroud) 我已经使用doPost方法公开发布了一个应用程序脚本(任何人,甚至是匿名的),如下所示,
function doPost(e){
var sheet = SpreadsheetApp.getActiveSheet();
var length = e.contentLength;
var body = e.postData.contents;
var jsonString = e.postData.getDataAsString();
var jsonData = JSON.parse(jsonString);
sheet.appendRow([jsonData.title, length]);
var MyResponse = "works";
return ContentService.createTextOutput(MyResponse).setMimeType(ContentService.MimeType.JAVASCRIPT);
}
Run Code Online (Sandbox Code Playgroud)
当我使用带有Advanced Rest Client的JSON对象发送一个Post请求时,它全部工作并返回200 OK响应.但是当我尝试从本地托管的反应应用程序发送带有反应axios的发布请求时,它会发送405响应.
XMLHttpRequest cannot load https://script.google.com/macros/s/AKfycbzyc2CG9xLM-igL3zuslSmNY2GewL5seTWpMpDIQr_5eCod7_U/exec. Response for preflight has invalid HTTP status code 405
Run Code Online (Sandbox Code Playgroud)
我也在浏览器中启用了跨源资源共享.发送POST请求的功能如下,
axios({
method:'post',
url:'https://script.google.com/macros/s/AKfycbzyc2CG9xLM-igL3zuslSmNY2GewL5seTWpMpDIQr_5eCod7_U/exec',
data: {
"title": 'Fred',
"lastName": 'Flintstone'
}
}).then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我为什么收到405回复,那将是非常感激的.
我想将我的联系表格发布到我的 google 脚本,该脚本将向我发送电子邮件。我使用以下代码:
var TO_ADDRESS = "example@gmail.com"; // where to send form data
function doPost(e) {
var callback = e.parameter.callback;
try {
Logger.log(e); // the Google Script version of console.log
MailApp.sendEmail(TO_ADDRESS, "Contact Form Submitted",
JSON.stringify(e.parameters));
// return json success results
return ContentService
.createTextOutput(callback+
JSON.stringify({"result":"success",
"data": JSON.stringify(e.parameters) }))
.setMimeType(ContentService.MimeType.JSON);
} catch(error) { // if error return this
Logger.log(error);
return ContentService
.createTextOutput(callback+JSON.stringify({"result":"error",
"error": e}))
.setMimeType(ContentService.MimeType.JSON);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试发布到 google 脚本 url 时,出现以下错误:
CORS 政策已阻止在 ' https://script.google.com/macros/s/~~myscriptid~~/exec ' 从源 ' http://localhost:4200 '访问 XMLHttpRequest …