这正在工作。
我能够通过Google Apps脚本创建一个终结点,该终结点使最终用户可以向我(或另一个联系人)发布消息,也可以将该消息的副本发布给他们。
POST请求的代码如下:
function doPost(e) {
var response;
try {
response = sendContactEmail(e.postData.contents);
}
catch (error) {
throw JSON.stringify(error, null, '\t');
}
return ContentService
.createTextOutput(JSON.stringify(response))
.setMimeType(ContentService.MimeType.JSON)
}
现在,当我尝试时,我遇到了问题。当我从Angular站点尝试使用服务代码时,例如:
@Injectable()
export class ContactService implements SenderService {
constructor(private http: HttpClient) {}
send(message: EmailMessage): Observable<any> {
return this.http.post<any>(
"https://script.google.com/macros/s/AKfycbyEuvROpXUEi4wTX4N06nqF6oHlwihVc9Ut6-OG04zPi5yuOCzn/exec",
JSON.stringify({ data: message }),
{
headers: {
"Access-Control-Allow-Origin": "*",
},
}
);
}
}
它不起作用,我遇到类似问题
Access to XMLHttpRequest at 'https://script.google.com/macros/s/AKfycbyEuvROpXUEi4wTX4N06nqF6oHlwihVc9Ut6-OG04zPi5yuOCzn/exec' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
在尝试调试此问题时,我鞭打打开邮递员,发出请求,仅取回以下HTML响应:
<!DOCTYPE html>
<html>
<head>
<link rel="shortcut icon" href="//ssl.gstatic.com/docs/script/images/favicon.ico">
<title>Error</title>
<style type="text/css">
body {
background-color: #fff;
margin: 0;
padding: 0;
}
.errorMessage {
font-family: Arial, sans-serif;
font-size: 12pt;
font-weight: bold;
line-height: 150%;
padding-top: 25px;
}
</style>
</head>
<body style="margin:20px">
<div><img alt="Google Apps Script" src="//ssl.gstatic.com/docs/script/images/logo.png"></div>
<div style="text-align:center;font-family:monospace;margin:50px auto 0;max-width:600px">Authorization is
required to perform that action.</div>
</body>
</html>
我对使用Google Apps脚本作为后端了解不多。
我应该为这种类型的东西设置OAuth令牌吗?如果可以,怎么办? 否则,我该怎么办?
目前,除了我的旧版Google Apps脚本之外,没有任何后端。
答案 0 :(得分:1)
在这种情况下,如何使用"Content-Type": "text/plain"
代替"Access-Control-Allow-Origin": "*"
如下?
headers: {
"Access-Control-Allow-Origin": "*",
},
headers: {
"Content-Type": "text/plain"
},
doPost(e)
运行正常。当您的Google Apps脚本发生错误时,该错误可能无法消除。请注意这一点。