Flask-CORS
AJAX跨域
- ajax请求中有一个同源(同一协议主机和端口)的规定,请求非同源时会出现跨域问题。
解决方案
JSONP
:需要前后端配合使用,稍显繁琐,不太推荐
- 授权方式:只需要在后端配置即可,比较简单,推荐使用
JSONP
$('#jsonp').click(function(){
$.getJSON('http://127.0.0.1:5000/jsonp/?callback=?', function(data){
alert(data.username)
})
})
@app.route('/jsonp/')
def jsonp():
import json
callback = request.args.get('callback')
s = callback + '(' + json.dumps({'username': 'dahua'}) + ')'
return s
授权方式
@app.route('/allow/')
def allow():
resp = jsonify({'username': 'allow'})
return resp
@app.after_request
def after_request(resp):
origins = ['http://127.0.0.1:8848', 'http://127.0.0.1:5000']
origin = request.headers['Origin']
if origin in origins:
resp.headers['Access-Control-Allow-Origin'] = origin
return resp
from flask_cors import CORS, cross_origin
resources = {
r'/api/*': {'origins': '*'},
r'/allow/': {'origins': '*'}
}
CORS(app, resources=resources)
@app.route('/')
def index():
return 'AJAX跨域测试'
@app.route('/allow/')
def allow():
resp = jsonify({'username': 'allow'})
return resp
官方文档