使用Flask服务器在Backbone客户端中启用CORS

时间:2013-05-01 15:20:08

标签: backbone.js flask cors

我想在我的骨干应用程序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

我想我要改变客户端的一些设置。但我不知道是什么。 我该怎么做以便能够进行跨域请求?

3 个答案:

答案 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设为*

即可