0

January 2017 Endpoints release notesで述べたように、私はX-グーグル・エンドポイントに追加することにより、クロスオリジン・リクエストをブロックから拡張サービスプロキシ(ESP)を停止するために私のopenapi.yamlファイルを更新しようとしました: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. 

私はGoogleクラウドログを見ると、私はrequestMethod:"OPTIONS"status:200ていることがわかります。エラーは、両方の開発者モードで、私は私の角度アプリケーションをデプロイした後です。 APIはPOSTメソッドなので、リクエストをブロックするのはESPだと思います。また、私はFLASK-CORSを使用して私のpythonアプリケーションでCORSを許可しているので動作するはずです。

私のアプリケーションには、Google App Engine上にある2つのサービスがあります。最初のものはStandard Envrionmentです。私が問題を抱えている第二は柔軟な環境です。私はdispatch.yamlファイルを使用しており、関連する場合はopenapi.yamlファイルを分けています。また、APIはhurl itと郵便局でも機能します。

何か助けが素晴らしいだろう!

答えて

1

ほとんどの場合、バックエンドアプリケーションはCORSオプションを正しく処理しませんでした。 "allowCors"がtrueの場合、エンドポイントプロキシはバックエンドアプリケーションに要求を渡します。プロキシは要求に何も追加しません。 「allowCors」がfalseの場合、プロキシは404を返します。

+0

ありがとうございます。 CORSを正しく処理していなかったのはバックエンドでした。 [FLASK-CORS](https://github.com/corydolphin/flask-cors)は適切なヘッダーを提供していませんでした。私は[この質問](https://stackoverflow.com/questions/19962699/flask-restful-cross-domainissues-with-angular-put-options-methods)に続き、フラスコafter_requestフックを使って正しいヘッダを作成し始めました。ありがとうございました – Nicholas

+0

openapi.jsonの「allowCors」のどこに「true」を追加する必要がありますか?私は試したが、それは私のために働いていない – caitoo0o