javascript - 如何从客户端的 Firebase 应用程序向我的应用程序引擎发出 http 请求?

标签 javascript firebase google-app-engine google-cloud-platform firebase-hosting

我编写了一个 Flask 应用程序并将其部署到应用程序引擎,该应用程序引擎将运行一些 python 脚本,并在我向如下 URL 发出 POST 请求时返回一些数据:

import logging
import firebase_admin
from firebase_admin import firestore
import flask

app = flask.Flask(__name__)
@app.route('/test', methods=['POST'])
def get_data():
    data = flask.request.json
    return flask.jsonify({"test":1000); 

我正在尝试向客户端上的“https://****.appspot.com/test”发出如下 POST 请求,该客户端是 Firebase 托管上托管的 Web 应用,但我收到“Access-” Control-Allow-Origin' 错误。

 fetch('https://***.appspot.com/vrp', {
                method: 'POST',
                data: null
            })
            .then(response => 
              console.log(`response is ` , response.json()))

我看到了here我可以编辑 app.yaml 但我不明白。我犯错了吗?

我的app.yaml:

runtime: custom
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

handlers:
- url: /*
  static_dir: /
  http_headers:
    Access-Control-Allow-Origin: "*"


manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

最佳答案

我最终使用了flask_cors并解决了这个问题。只需在您的 main.py 或您的代码所在位置使用它,如下所示。

import logging
import firebase_admin
from firebase_admin import firestore
import flask
from flask_cors import CORS


app = flask.Flask(__name__)
CORS(app)

@app.route('/test', methods=['POST'])
def get_data():
    data = flask.request.json
    print('@/get_data via route /test method POST with data {}'.format(data))
    return flask.jsonify({"test":1000}); 


if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)

关于javascript - 如何从客户端的 Firebase 应用程序向我的应用程序引擎发出 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54542021/

相关文章:

firebase - 如何在 Flutter 中使用查询访问 Cloud Firestore 的数组索引?

javascript - 如何在 nuxt(vue) 中使用原始 html 文件?

java - GAE 和多客户端应用程序

javascript - 单击输入字段触发窗口在android上调整大小

javascript - 网络音频启动和停止振荡器然后再次启动它

javascript - Firebase注册一次,登录不同应用

python - GAE SDK 1.6.4 dev_appserver 数据存储刷新

python - Google App Engine 柔性环境中的 "Failed to import google/appengine/ext/deferred/handler.py"

javascript - 我可以链接到 dom 中的元素吗

javascript - 如何在引导选择选择器中为选项(下拉菜单)设置固定宽度