Javascript 使用flask和ajax的跨原点问题
我对“跨来源请求被阻止”有一些问题。我尝试从服务器首先允许,而不是从所有(“*”)允许。每次在chrome开发者工具包上都会收到相同的错误消息 以下是我的python代码:Javascript 使用flask和ajax的跨原点问题,javascript,python,ajax,flask,cors,Javascript,Python,Ajax,Flask,Cors,我对“跨来源请求被阻止”有一些问题。我尝试从服务器首先允许,而不是从所有(“*”)允许。每次在chrome开发者工具包上都会收到相同的错误消息 以下是我的python代码: application = Flask(__name__) application.config.from_object(__name__) cors = CORS(application, resorces={r'/*': {"origins": '*'}}) @application.route("/get-live-
application = Flask(__name__)
application.config.from_object(__name__)
cors = CORS(application, resorces={r'/*': {"origins": '*'}})
@application.route("/get-live-data",methods=['GET'])
@cross_origin()
def live_data():
con = connect_db()
cur = con.cursor()
cur.execute("SELECT * from envoiContinuT")
sqlite_result = cur.fetchall()
cle = json.load(open(JSON_STATUS))
parametres = json.load(open(JSON_PARAMETRES))
descT = []
for key in cle["status"]:
attr = parametres[key]
if attr["envoiC"] == 1:
descT.append(attr["description"])
response = any_response(flask.jsonify(data=descT))
return response
以下是我的Ajax代码:
var baseURL = "http://localhost:8000";
function getLiveData(data){
//Get the parameters descriptions
$.ajax({
method: 'GET',
url:baseURL + '/get-live-data',
headers: {
"Accept" : "application/json",
"Content-type": "application/json"
},
success:function(data){
console.log(data);
//populateAccordion(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus);
console.log("Error: " + errorThrown);
}
});
}
谢谢你的回答 这里有一个输入错误:
cors = CORS(application, resorces={r'/*': {"origins": '*'}})
^^^^^^^^
应该是:
cors = CORS(application, resources={r'/*': {"origins": '*'}})
另外,为GET
请求发送Content-type
请求头也没有意义。对于GET
请求没有请求主体,因此不需要指定内容类型。因此,只需这样做:
headers: {
"Accept" : "application/json",
},
否则,如果发送值为application/json
的Content-Type
请求头,则会触发浏览器执行以下操作,并且您的配置必须允许:
@application.route("/get-live-data",methods=['GET', 'POST'])
@cross_origin(headers=['Content-Type']) # Send Access-Control-Allow-Headers
但是如果您允许
内容类型
请求头,那么您也可以允许发布
请求(如上所述)-因为正如前面提到的,只允许获取
请求是没有意义的。在使用flask_restplus时,我所要做的就是创建CORS(…)
的对象并使用“Accept”:“application/json”
它的工作原理与charm(y)类似