:8080前端POST到:5000烧瓶后端被CORS阻止(docker-compose)

时间:2019-02-24 22:00:12

标签: python docker flask cors

我的前端和后端运行在单独的容器中。但是,当我尝试从React前端-> Flask后端执行POST时,我可以同时访问这两者。

  

可以从源地址“ 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 :(得分:0)

正在清除信息,表明您的来源是lcoalhost:8080,而您在http://localhost:5000/api/upload上访问它时,可以先检查端口

我认为您必须在falsk应用程序中进行此更改

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

我想您是否可以在此处指定端口