问题描述:
后台使用Flask框架,前端用ajax与后台交互,遇到了跨域访问的问题:一直提示没有Access-Control-Allow-Origin!!!
解决方法:
1,把ajax请求的数据的数据类型换成jsonp,
但是①采用jsonp格式在返回数据的时候还要提供一个回调函数;
②jsonp只能采用GET方法,即使你写成POST,它采用的还是GET,这就带来安全性上的问题,因此这种方式不推荐。
$.ajax({ type:'POST', url:'127.0.0.1:5000', data:data, dataType:'jsonp',//改成了jsonp格式,解决了跨域访问的问题 success:function(data){ console.log(data) }
2,在后台返回的相应中添加响应头
from flask_cors import *
# r'/*' 是通配符,让本服务器所有的URL 都允许跨域请求
CORS(app, resources=r'/*')
res = flask.make_response() res.headers['Access-Control-Allow-Origin'] = '*' res.headers['Access-Control-Allow-Methods'] = 'POST,GET,OPTIONS' res.headers['Access-Control-Allow-Headers'] = 'x-requested-with,content-type'
return res