google-apps-script - 如何允许 Google AppScript 中的 Cors 标头发出 XMLHttpRequest?
问题描述
我在我doGet
的. 当我点击端点从 Python 发出 post 请求时,它确实可以正常工作并按预期工作。doPost
appscript
但是当我尝试使用基于 Flutter 的移动应用程序访问相同的 url 时,它会抛出一个 XML 错误。(我怀疑这与CORSING有关)。
当我点击 url 时get request
,我得到了正确的响应,但post
请求失败。为确保正确配置我的 Post 请求,我创建了一个post request
公共 API,它的工作原理非常有魅力。
是否可以添加标题,我可以像这样启用cors:
allowHeaders = {
"Access-Control-Allow-Origin": "*", // Required for CORS support to work
"Access-Control-Allow-Credentials": true, // Required for cookies, authorization headers with HTTPS
"Access-Control-Allow-Headers": "Origin,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,locale",
"Access-Control-Allow-Methods": "POST, OPTIONS"
}
这是我的 doPost 请求返回的内容:
ContentService.createTextOutput(JSON.stringify(
{
data: isAuthenticated.data,
error: true,
//request: request,
msg: query.apiKey,
//paramters:request.parameters
})).setMimeType(ContentService.MimeType.JSON)
这是我的 python 脚本来获取帖子响应:
requests.post("https://script.google.com/macros/s/AKfycbz7kTROol8u509M_p9pMZ9XRnL-myVjcRQKeb9Etp_OIMPnH640vHf_0Jp2dvvrbto7kOg/exec",
json = requestObject)
这是我的颤振功能:
Future<http.Response> createAlbum() async{
print("Trying to make a post request");
var result = await http.post(Uri.parse('https://script.google.com/macros/s/AKfycbz7kTROol8u509M_p9pMZ9XRnL-myVjcRQKeb9Etp_OIMPnH640vHf_0Jp2dvRIco7kOg/exec'),
headers: {"Content-Type": "application/json"},
body: jsonEncode(<String, dynamic>{
"apiKey":apiKey,
"operationType":"register_user",
"operationData": {
"email": "shivam@yoptima.com",
"otp": 318728
}
}),
);
print("Here is the result: " + result.body);
}
只是为了澄清一些事情:
- 获取请求适用于这两个平台。
- Post Request 适用于 Python for AppScript。
- Post Request 适用于 Flutter 中的任何其他公共 API。
- 击中 AppScript API 时,Post Request 不适用于 Flutter。
- 我怀疑这与CORS有关。(但不是很确定)。
- Flutter
http
库通过XMLHttpRequest
.
解决方案
推荐阅读
- reactjs - 检测容器内 div 的点击
- c# - 什么存档文件格式有利于分布式处理期间的随机访问?
- rust - 方法 for_each 存在,但使用 StreamDeckSocket 时不满足 trait bound
- c++ - 删除构造函数和模板
- flutter - Flutter FadeIn/FadeOut animation together
- reactjs - 更新 redux 状态/提交表单时页面重新加载
- qt - 为什么不同的treeItems链接到相同的数据
- c++ - 使用变量定义数组大小和使用新运算符 c++ 有什么区别?
- node.js - Sequelize count fn add where 子句
- ios - iOS:间歇性缓慢的网络请求