Tôi là người mới với Python, nhưng tôi đã gặp vấn đề tương tự khi làm việc với các ứng dụng Node. Tôi đang thực hiện một yêu cầu jQuery AJAX khá tiêu chuẩn để Python sever địa phương của tôi:Python Flask Cors Issue
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);
}
tôi có thể xác nhận rằng các dấu hiệu biến được xác nhận như thế này:
Object {access_token: "791415154.2c0a5f7.4d707361de394512a29682f9cb2d2846", campaign_id: "102"}
Nhưng tôi nhận được lỗi này từ javascript của tôi bảng điều khiển:
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.
Tôi đã phát hiện ra rằng khi tôi tạo ứng dụng Node là lỗi cors. Trang mà tôi đang chạy yêu cầu jQuery AJAX từ http. Dưới đây là các bộ phận của mã Python của tôi mà tôi tin rằng tôi đang cấu hình sai:
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'
Và con đường:
@app.route("/api/ia/v1/user_likes", methods=['POST', 'OPTIONS'])
def user_likes():
validate = validate_request(request.data)
return 'something'
My Python lỗi cũng được trả lại một lỗi vì yêu cầu không bao giờ làm cho nó dòng mã này:
def validate_request(object_from_user):
load_object = json.loads(object_from_user)
Tôi có thể khắc phục điều đó sau. Dù sao, không ai có bất cứ đề nghị cho các cấu hình Cors cho Python?
tôi đã xem xét những tài liệu sớm hôm nay và cố gắng cấu hình khác nhau. Thêm @cross_origin không hỗ trợ cấu hình hiện tại của tôi. –
Trong trường hợp của JSON, trước đây bạn cần xác định các tiêu đề được cho phép. Điều này bây giờ là thoải mái và nên làm việc out-of-the box. Vui lòng cho tôi biết nếu bạn có bất kỳ vấn đề nào. –
Tôi cũng đang cố thực hiện điều đó. Tôi sử dụng trang trí @cors và vẫn nhận được – Addinall