以下代码在docker容器外工作得很好.现在我想为后端添加一个容器,为后端添加另一个容器.所以我创建了两个Dockerfiles(可能是无趣的)和下面的docker-compose文件.我将axios.get(‘http://127.0.0.1:5000/api/test’)更改为vue组件中的axios.get(‘http:// backend:80 / api / test’).我能够从前端容器ping后端容器,我能够通过curl接收api结果.
但是axios再也无法提出这个api请求了.在firefox控制台中我收到错误:
@H_301_7@Error: "Network Error" Cross-Origin request blocked [...] Reason: CORS request did not succeed
但我能够在我的网络中的一台计算机和另一台计算机的前端运行docker之外的后端.所以Cross-Origin在docker之外没问题.
这有什么问题?我不知道.
泊坞窗,compose.yml
@H_301_7@version: '2' services: backend: build: ./backend container_name: backend ports: - "80:80" environment: - FLASK_APP=app/main.py - FLASK_DEBUG=1 - 'RUN=flask run --host=0.0.0.0 --port=80' networks: - some-net frontend: build: ./frontend container_name: frontend ports: - "90:80" networks: - some-net networks: some-net: driver: bridge
原始代码
python中的后端
@H_301_7@from flask import Flask,jsonify from flask_cors import CORS app = Flask(__name__) CORS(app,resources=r'/api/*') @app.route('/api/test') def test(): return jsonify({ "foo": "bar" }) if __name__ == '__main__': app.run(debug=True)
frondend(仅限vue.js组件)
@H_301_7@
最佳答案