我对Python很陌生,但我在使用Node应用程序时遇到了同样的问题.我正在向我的本地Python服务器发出一个非常标准的jQuery AJAX请求:
init: function(callback) {
var token = _config.get_token();
$.ajax({
url: 'http://localhost:5000/api/ia/v1/user_likes',
type: 'POST',
contentType: 'application/json',
datatype: 'json',
data: token
})
.done(function(data) {
callback(data);
})
.fail(function(err) {
callback(err);
});
callback(token);
}
我可以确认变量令牌是这样确认的:
Object {access_token: "791415154.2c0a5f7.4d707361de394512a29682f9cb2d2846", campaign_id: "102"}
但我从我的JavaScript控制台收到此错误:
XMLHttpRequest cannot load http://localhost:5000/api/ia/v1/user_likes. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://s3.amazonaws.com' is therefore not allowed access. The response had HTTP status code 500.
我发现当我构建Node应用程序时,这是一个cors错误.我运行jQuery AJAX请求的页面是http.以下是我认为我配置错误的Python代码部分:
from flask import Flask, request, redirect
from flask.ext.cors import CORS, cross_origin
app = Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'application/json'
路线:
@app.route("/api/ia/v1/user_likes", methods=['POST', 'OPTIONS'])
def user_likes():
validate = validate_request(request.data)
return 'something'
我的Python错误也返回错误,因为请求永远不会进入这行代码:
def validate_request(object_from_user):
load_object = json.loads(object_from_user)
我可以稍后解决.无论如何,有没有人对Python的Cors配置有任何建议?
解决方法:
在我尝试了别人的建议和答案之后.这是我使用的,有效的.
脚步:
> pip安装烧瓶烧瓶
>将其复制并粘贴到app.py文件中
码
from flask import Flask, jsonify
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app, support_credentials=True)
@app.route("/login")
@cross_origin(supports_credentials=True)
def login():
return jsonify({'success': 'ok'})
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8000, debug=True)
> python app.py
注意:请确保在客户端的ajax配置中具有以下内容:
$.ajaxSetup({
type: "POST",
data: {},
dataType: 'json',
xhrFields: {
withCredentials: true
},
crossDomain: true,
contentType: 'application/json; charset=utf-8'
});
如果有人想知道,support_credentials = True只是意味着它来回传送有效载荷中的cookie.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。