【问题标题】:How to allow cross site origin requests in Google App Engine?如何在 Google App Engine 中允许跨站点源请求?
【发布时间】:2019-09-21 07:54:12
【问题描述】:

我有一个使用 Express 制作的简单 API,它返回 json。 Express 服务器在 Google App Engine 上运行。我正在使用 cors (https://www.npmjs.com/package/cors) 来启用所有 CORS 请求,但我仍然收到“请求的资源上不存在‘Access-Control-Allow-Origin’标头。”从 SPA 应用程序执行 AJAX 请求时。

app.use(cors())

根据文档,上述默认设置为: { "origin": "*", "methods": "GET,HEAD,PUT,PATCH,POST,DELETE", "preflightContinue": false, "optionsSuccessStatus": 204 }

这应该足够了,因为我只是从我的 SPA 中做一个简单的 GET 请求。

有什么想法吗?

【问题讨论】:

  • 继续添加一些您尝试过的代码。
  • @JoeyPhillips 用更多信息稍微改变了问题

标签: express google-app-engine cors app-engine-flexible


【解决方案1】:

App Engine 通过 app.yaml 文件支持 CORS,如下所述:link

在您的 app.yaml 文件中,通过添加 http_headers 元素来修改 handlers 部分,如下所示:

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    Access-Control-Allow-Origin: '*'
  # ...

之后,您可以重新部署 App Engine 以应用配置更改。

【讨论】:

  • 感谢您的回复!据我了解,这是针对静态文件的。在我的情况下,我有一个简单的 API 执行 json-responses,Access-Control-Allow-Origin 标头应该在代码中设置(即通过使用 cors 模块或其他东西)。这对我不起作用。
  • 知道这需要什么字段吗?我尝试只添加 http_headers,但没有成功。
【解决方案2】:

正如我在这里回答的那样,https://stackoverflow.com/a/62075272/2235936

app.yaml 中不需要那些handlers 的东西,只需要在 G 存储桶上设置 CORS 即可。

【讨论】:

  • 问题是关于 Google App Engine,而不是 Cloud Storage!
【解决方案3】:

我真的对文档感到困惑,因为它暗示 CORS 标头只能在提供静态内容时发送,而不是更常见的情况,即 CORS 告诉浏览器在通过调用时可以接受来自后端的 JSON 或 XML第三方托管脚本。

我的解决方法是将其作为应用程序本身的自定义标头返回。例如,使用 Flask:

from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/")
def root():
     import traceback
     try:
         data = {'key1': "value1", 'key2': "value2"}
         return jsonify(data), 200, {'Access-Control-Allow-Origin': "*"}
     except:
         return format(traceback.format_exc()), 500,  {'Content-Type': "text/plain"}

if __name__ == '__main__':
    app.run()

【讨论】:

  • 谢谢你!这两种官方解决方案都对我没有任何帮助——app.yaml http_headers 属性和 python CORS(app) 都使用了。那个cors,每次弹出时总是一个小时的头发拉扯。
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2015-10-11
  • 2015-04-15
  • 2015-05-22
相关资源
最近更新 更多