簡體   English   中英

如何在 Google App Engine 中允許跨站點源請求?

[英]How to allow cross site origin requests in Google App Engine?

我有一個用 Express 制作的簡單 API,它返回 json。 Express 服務器在 Google App Engine 上運行。 我正在使用 cors ( https://www.npmjs.com/package/cors ) 來啟用所有 CORS 請求,但我仍然收到“請求的資源上不存在‘Access-Control-Allow-Origin’標頭。 ” 從 SPA 應用程序執行 AJAX 請求時。

app.use(cors())

根據文檔,上述默認設置為: { "origin": "*", "methods": "GET,HEAD,PUT,PATCH,POST,DELETE", "preflightContinue": false, "optionsSuccessStatus": 204 }

這應該足夠了,因為我只是從我的 SPA 中執行一個簡單的 GET 請求。

有任何想法嗎?

我真的對文檔感到困惑,因為它意味着 CORS 標頭只能在提供靜態內容時發送,而不是更常見的場景,即 CORS 告訴瀏覽器在通過第三方調用時可以接受來自后端的 JSON 或 XML -派對托管腳本。

我的解決方法是將它作為應用程序本身中的自定義標頭返回。 例如,使用燒瓶:

from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/")
def root():
     import traceback
     try:
         data = {'key1': "value1", 'key2': "value2"}
         return jsonify(data), 200, {'Access-Control-Allow-Origin': "*"}
     except:
         return format(traceback.format_exc()), 500,  {'Content-Type': "text/plain"}

if __name__ == '__main__':
    app.run()

App Engine 通過此處提到的app.yaml文件支持 CORS: 鏈接

app.yaml文件中,通過添加http_headers元素來修改handlers部分,如下所示:

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    Access-Control-Allow-Origin: '*'
  # ...

之后,您可以重新部署 App Engine 以應用配置更改。

正如我在這里回答的那樣, https://stackoverflow.com/a/62075272/2235936

app.yaml 中不需要那些handlers東西,只需在 G 存儲桶上設置 CORS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM