0

正如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和邮递员。

任何帮助将会很棒!

回答

1

很有可能您的后端应用程序没有正确处理CORS OPTIONS。 如果“allowCors”为true,则Endpoint代理将把请求传递给后端应用程序。代理服务器不会向请求添加任何内容。如果“allowCors”为false,则代理将返回404.

+0

感谢您的支持。这是后端没有正确处理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

+0

您可以指定openapi.json中的哪个位置:“allowCors”:“true”应该添加吗?我已经尝试过,并没有为我工作 – caitoo0o

相关问题