javascript – Python Flask Cors问题

我对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.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...