问题描述
我想将我的联系表格发布到我的 google 脚本中,该脚本将向我发送电子邮件.我使用以下代码:
I want to post my contact form to my google script that will send an e-mail to me. I use the following code:
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);
}
}
当我尝试发布到 google 脚本 url 时,我收到以下错误:
When i try to post to the google script url, i get the following error:
访问 XMLHttpRequest 在'https://script.google.com/macros/s/~~myscriptid~~/exec' 来自原点'http://localhost:4200' 已被 CORS 策略阻止:响应预检请求未通过访问控制检查:否请求中存在Access-Control-Allow-Origin"标头资源.
我不知道如何将 CORS 过滤器添加到我的 google 脚本中.
I have no clue how to add the CORS-filter to my google script.
我知道脚本正在运行,我已经用这个插件对其进行了测试:
I know the script is working i have tested it with this plugin:
https://chrome.google.com/webstore/详细信息/允许控制允许原点/nlfbmbojpeacfghkpbjhddihlkkiljbi
推荐答案
据我了解,您有要在自定义域上运行的应用程序.它应该访问谷歌云上的脚本.
As far as I understood you have application to be run on custom domain. And it should access script on google cloud.
坏消息:在您的应用程序端无法跳过 CORS 检查(直到 请求很简单我相信不是你的情况).
The bad news: there are no way to skip CORS check on your application side(until request is simple that I believe is not your case).
您应该在 Access-Control-Allow-Originrel="nofollow noreferrer">谷歌云端:
You should specify Access-Control-Allow-Origin
on Google Cloud side:
Cloud Storage 仅允许您在存储分区级别设置 CORS 配置.您可以使用 gsutil 命令行工具、XML API 或 JSON API 为存储桶设置 CORS 配置.有关在存储桶上设置 CORS 配置的更多信息,请参阅配置跨域资源共享 (CORS).有关 CORS 配置元素的更多信息,请参阅设置存储桶 CORS.
您可以使用以下任一 XML API 请求 URL 从 Cloud Storage 获取包含 CORS 标头的响应:
You can use either of the following XML API request URLs to obtain a response from Cloud Storage that contains the CORS headers:
storage.googleapis.com/[BUCKET_NAME]
storage.googleapis.com/[BUCKET_NAME]
[BUCKET_NAME].storage.googleapis.com
[BUCKET_NAME].storage.googleapis.com
如果这对任何原因都没有帮助,您需要让自己的服务器作为代理工作:
If this does not help for any reason you will need to get your own server working as a proxy:
您的客户端应用程序 <->你的后端返回 Access-Control-Allow-Origin
<->谷歌云
your client application <-> your backend that returns Access-Control-Allow-Origin
<-> google cloud
这篇关于如何在我的谷歌脚本中允许 CORS 请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!