如何使用 Cloud Endpoints 启用 CORS?

Posted

技术标签:

【中文标题】如何使用 Cloud Endpoints 启用 CORS?【英文标题】:How to enable CORS with Cloud Endpoints? 【发布时间】:2012-07-27 17:11:48 【问题描述】:

是否有一种巧妙的方法可以通过 Cloud Endpoints 启用 CORS?

(在响应中添加“Access-Control-Allow-Origin:*”或类似的内容)

谢谢, 布兰登

【问题讨论】:

我也想启用它以在客户端进行调试。 :) 默认情况下所有域都没有启用 CORS 吗?这可能是一个错误。如果是这样,我可以在内部提交一个错误。 我应该提一下,能够在本地调试它会很方便,也许可以修改 appengine-web.xml 文件。我已经从我的 Dart 编辑器设置了 XHR2 请求,但我需要打开 cors 才能在本地跨域工作。 我找到了这个但不起作用。 包括> 静态文件> @Branflake2267 你最后做了什么?我看不出端点类有任何区别,也找不到代码中的 GET CORS 请求示例。 【参考方案1】:

尝试将其添加到端点的 yaml 文件中:

x-google-endpoints:
  - name: "your-endpoint-host-name"
    allowCors: "true"

【讨论】:

【参考方案2】:

由于 CORS 用于 Cloud Endpoints 的生产。我在 devserver(本地)上测试的是禁用浏览器安全性。对于 Dartium(我认为 Chrome 也是)在启动时使用 --disable-web-security 参数。

【讨论】:

这正是要找的,在 devserver 上向 GAE 发送请求【参考方案3】:

这取决于您是否可以控制端点上的标头 - 通过应用程序或为包含要发出跨域请求的脚本的原始页面提供服务的 Web 服务器。

JSON-P 似乎仍然更受欢迎——要么是由于缺乏对平台服务器端的支持,要么是不相信它会与客户端一起工作(例如旧版 Web 浏览器)——而 JSON-P 通常可以工作。

【讨论】:

JSONP 应该适用于 Endpoints,但通常只适用于 GET 请求。 是的,这只是其中更令人不快的事情之一;)我很惊讶 CORS 并没有更广为人知,有兴趣看看人们还有什么其他答案 我更愿意尝试通过将响应标头添加到端点响应来启用 COR。问题是如何。 :) Branflake2267 - 你是使用 Python 还是 Java 来进行 GAE?如果 java、httpservletresponse 或过滤器可以设置标头,但是,不确定它是否会被 GAE 忽略/不允许 Java,尤其是已发布的新 Java Cloud Endpoints api。我已将此添加到 appengine-web.xml 但不适用于保留路径 ./_ah

以上是关于如何使用 Cloud Endpoints 启用 CORS?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 devserver 上使用 Oauth 测试 Cloud Endpoints

如何启用Spring Boot Actuator的所有Endpoints

如何在 Google Cloud Endpoints 中允许 CORS?

具有 Google Cloud Functions 的 Google Cloud Endpoints [关闭]

如何在Python和Java中访问Google Cloud Endpoints请求标头

如何在 Google Cloud Endpoints Javascript 客户端中设置自定义标头?