如何在Google Cloud Endpoints中允许CORS?
问题描述:
正如January 2017 Endpoints release notes说,我试图通过向X-谷歌的端点来更新我的openapi.yaml文件阻塞跨域请求停止扩展服务代理(ESP):如何在Google Cloud Endpoints中允许CORS?
swagger: "2.0"
info:
description: "Market scan using technical indicators."
title: "Talib Test"
version: "1.0.0"
host: "YOUR-PROJECT-ID.appspot.com"
x-google-endpoints:
- name: "YOUR-PROJECT-ID.appspot.com"
allowCors: "true"
basePath: "/"
consumes:
- "application/json"
produces:
- "application/json"
schemes:
- "http"
...
我继续在尝试从我的角度应用程序进行http调用时在浏览器中出现错误。该错误是在这两个开发人员模式后,我部署我的角度应用:
XMLHttpRequest cannot load
Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
,当我看着谷歌云的日志记录我看到requestMethod:"OPTIONS"
和status:200
。这个API是一个POST方法,所以我猜测这是阻止请求的ESP。另外,我已经允许CORS在我的Python应用程序中使用FLASK-CORS,所以它应该工作。
我的应用程序有两个都在Google App Engine上的服务。首先是标准环境。第二,我遇到的问题是灵活的环境。我正在使用dispatch.yaml文件并分开openapi.yaml文件(如果相关的话)。此外,该API适用于hurl it和邮递员。
任何帮助将会很棒!
答
很有可能您的后端应用程序没有正确处理CORS OPTIONS。 如果“allowCors”为true,则Endpoint代理将把请求传递给后端应用程序。代理服务器不会向请求添加任何内容。如果“allowCors”为false,则代理将返回404.
感谢您的支持。这是后端没有正确处理CORS。 [FLASK-CORS](https://github.com/corydolphin/flask-cors)没有提供正确的标题。我跟着[这个问题](https://stackoverflow.com/questions/19962699/flask-restful-cross-domain-issue-with-angular-put-options-methods),并开始使用烧瓶after_request挂钩创建正确的标题。再次感谢 – Nicholas
您可以指定openapi.json中的哪个位置:“allowCors”:“true”应该添加吗?我已经尝试过,并没有为我工作 – caitoo0o