采用前后端分离的方式开发WEB应用,前端适用了Vue.js,后端用的是Flask。
在使用axios进行前后台交互时,浏览器控制台报错:
blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
经查,是跨域访问限制问题,即浏览器发出的前后台交互请求(指向flask server),与地址栏请求(指向node.js server)不同。
一种比较直接的解决方法是在Flask后台中,作如下修改:
from flask import Flask
from flask_cors import * # 注意这一行-01
# 创建webapp应用,__name__是python预定义变量,被设置为使用本模块.
webapp = Flask(__name__)
CORS(webapp, supports_credentials=True) # 注意这一行-02
# 此处对应了路由文件routes.py中的内容
from app import routes
通过flask_cors模块来处理跨域请求。
另一种可行的方法是将node.js server和flask server都用nginx进行部署,利用nginx的反向代理功能,使浏览器发送给前者和后者的请求,都指向nginx,从而将“跨域请求”转换成“不跨域请求”。这种方法后面再摸索一下。