: 8080 интерфейс POST для: 5000 конец колбы заблокирован CORS (docker-compose) - PullRequest
0 голосов
/ 25 февраля 2019

Мой фронтенд и бэкэнд работают в отдельных контейнерах.Однако я могу получить доступ к обоим, но при попытке выполнить POST из интерфейса React -> Flask меня блокирует CORS.

Доступ к выборке в 'http://localhost:5000/api/upload' от источника`'http://localhost:8080' заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '.Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Я пытался добиться этого с Flask-Cors, но все ещепосле многих попыток вы получите ту же ошибку.

Вот мое приложение фляги.py:

# Start with a basic flask app webpage.
from flask import Flask, render_template, url_for, copy_current_request_context, request
from werkzeug.utils import secure_filename
from flask_cors import CORS, cross_origin
import os

UPLOAD_FOLDER = '/uploads'
ALLOWED_EXTENSIONS = set(['gz'])

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
app.config['DEBUG'] = True
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
CORS(app, resources=r'/api/*')

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/api/upload', methods=['POST'])
@cross_origin(headers=['Content-Type'])
def fileUpload():
    target=os.path.join(UPLOAD_FOLDER,'test_docs')
    if not os.path.isdir(target):
        os.mkdir(target)
    file = request.files['file'] 
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        destination="/".join([target, filename])
        file.save(destination)
        response="Whatever you wish too return"
    else:
        response="File not parsed."
    return response

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

1 Ответ

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

это очищает, показывая, что ваш источник - lcoalhost: 8080, в то время как вы обращаетесь к нему по http://localhost:5000/api/upload, вы можете сначала проверить порт

я думаю, что вам нужно внести некоторые изменения здесь, в приложении falsk

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0') 

Я думаю, вы можете указать здесь порт или что-то в этом роде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...