我想在我的骨干应用程序127.0.0.1和我的Flask服务器127.0.0.1:5000之间进行跨域请求。在我切换到Backbone之前,我有一个Ember.js应用程序,我遇到了同样的问题。但是我通过在我的Flask应用程序中添加它来实现它:
@app.after_request
def after_request(data):
response = make_response(data)
response.headers['Content-Type'] = 'application/json'
response.headers['Access-Control-Allow-Origin'] = 'http://localhost'
return response
以这种方式配置Ember RESTAdapter
:
adapter: DS.RESTAdapter.create({
url : 'http://127.0.0.1:5000',
// In order to allow cross domain requests
ajax: function(url, type, hash) {
jQuery.ajax(url)
}
})
});
但这不适用于我的Backbone应用程序。
XMLHttpRequest
无法加载http://127.0.0.1:5000/files
。Content-Type
不允许请求标头字段Access-Control-Allow-Headers
。
我想我要改变客户端的一些设置。但我不知道是什么。 我该怎么做以便能够进行跨域请求?
答案 0 :(得分:3)
这对我有用。
http://flask-cors.readthedocs.org/en/latest/
$ pip install -U flask-cors
from flask import Flask
from flask.ext.cors import CORS, cross_origin
app = Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
@app.route("/")
@cross_origin()
def helloWorld():
return "Hello, cross-origin-world!"
答案 1 :(得分:2)
我通过添加
来实现它 response.headers['Access-Control-Allow-Headers'] = "Origin, X-Requested-With,Content-Type, Accept"
到after_request()
方法。
答案 2 :(得分:0)
对于开发,您可以:
或者只需将Access-Control-Allow-Origin
设为*