Как я могу сделать http-запрос к своему механизму приложения из приложения Firebase на стороне клиента? - PullRequest
0 голосов
/ 05 февраля 2019

Я написал приложение-колбу и развернул его на движке приложений, который будет запускать некоторые скрипты Python и возвращать некоторые данные, когда я делаю POST-запрос к URL-адресу, например:

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); 

Я пытаюсьсделать запрос POST, как показано ниже, на «https://****.appspot.com/test" на клиенте, который является веб-приложением, размещенным на хостинге Firebase, но получаю ошибку« Access-Control-Allow-Origin ».

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

Я видел здесь , что я могу отредактировать 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

1 Ответ

0 голосов
/ 06 февраля 2019

Я закончил с использованием 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)
...