Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用flask和ajax的跨原点问题_Javascript_Python_Ajax_Flask_Cors - Fatal编程技术网

Javascript 使用flask和ajax的跨原点问题

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-

我对“跨来源请求被阻止”有一些问题。我尝试从服务器首先允许,而不是从所有(“*”)允许。每次在chrome开发者工具包上都会收到相同的错误消息

以下是我的python代码:

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)类似