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

相關問題