【发布时间】:2017-12-08 04:12:06
【问题描述】:
我已经使用 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);
}
当我使用 Advanced Rest Client 发送带有 JSON 对象的 Post 请求时,它一切正常并返回 200 OK 响应。但是,当我尝试从本地托管的 react 应用程序发送带有 react 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
我也在浏览器中启用了跨源资源共享。发送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);
});
【问题讨论】:
-
尝试
POST而不是post,这为我解决了类似的问题
标签: google-apps-script axios cors http-status-code-405