Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 Can';由于CORS问题,无法访问Heroku上的烧瓶API_Javascript_Jquery_Heroku_Flask_Cors - Fatal编程技术网

Javascript Can';由于CORS问题,无法访问Heroku上的烧瓶API

Javascript Can';由于CORS问题,无法访问Heroku上的烧瓶API,javascript,jquery,heroku,flask,cors,Javascript,Jquery,Heroku,Flask,Cors,我正试图调用我的FlaskAPI(托管在Heroku上)。当我将url放在url栏中时,它会工作,但当我通过jquery实现它时,它不会失败 我继续安装并添加了以下内容: app = Flask(__name__) cors = CORS(app) @app.route("/") @cross_origin() def home(): return jsonify({"results":{}}) 我还有别的事要做吗?在我的请求中,我还做了以下工作: function fetchRes

我正试图调用我的FlaskAPI(托管在Heroku上)。当我将url放在url栏中时,它会工作,但当我通过jquery实现它时,它不会失败

我继续安装并添加了以下内容:

app = Flask(__name__)
cors = CORS(app)

@app.route("/")
@cross_origin()
def home():
    return jsonify({"results":{}})
我还有别的事要做吗?在我的请求中,我还做了以下工作:

function fetchResults(requestURL, callback) {

    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() { 
        if (xmlHttp.readyState === 4) {  
            if (xmlHttp.status === 200) {   
                callback(xmlHttp.responseText);
            } else {  
                console.error("Error: " + xmlHttp.status + xmlHttp.statusText);  
            }  
        }  
    }

    //Make Async GET Request
    xmlHttp.open("GET", requestURL, true); 
    xmlHttp.setRequestHeader('Access-Control-Allow-Origin', '*');
    xmlHttp.send(null);
}           

Access Control Allow Origin
是您应该在响应而不是请求中设置的标题。而
cross\u origin
可以为您实现这一点

如果要使用JQuery,只需使用:

$.ajax({
    url: ...,
    ....,
    crossDomain: true
})

Access Control Allow Origin
是您应该在响应而不是请求中设置的标题。而
cross\u origin
可以为您实现这一点

如果要使用JQuery,只需使用:

$.ajax({
    url: ...,
    ....,
    crossDomain: true
})

谢谢你,Mehdy。但是我想使用xmlhttprequest(我已经发布了完整的javascript函数)。我已经按照您的建议从请求中删除了头,但我仍然看到相同的问题,记录为:
加载资源失败:无法从null发出任何请求。
哦!我懂了!只是不要将
null
传递给send函数!只需
xmlHttp.send()
我只需测试它就可以了。这个错误显然是由于请求引起的,与CORS无关。所以请确保您提供了一个有效的请求URL。您是如何在@mehdy测试它的?如果我在url栏中复制并粘贴requestURL,它就会工作。但是,如上图所示实现时,它不起作用。话虽如此,如果我点击Safari的“开发”菜单中的
禁用交叉源限制
,我上面的例子就可以了,这意味着这是一个CORS问题。哇。我想这是一次旅行。我的API不需要身份验证。我发现它可以在firefox中使用。谢谢Mehdy。但是我想使用xmlhttprequest(我已经发布了完整的javascript函数)。我已经按照您的建议从请求中删除了头,但我仍然看到相同的问题,记录为:
加载资源失败:无法从null发出任何请求。
哦!我懂了!只是不要将
null
传递给send函数!只需
xmlHttp.send()
我只需测试它就可以了。这个错误显然是由于请求引起的,与CORS无关。所以请确保您提供了一个有效的请求URL。您是如何在@mehdy测试它的?如果我在url栏中复制并粘贴requestURL,它就会工作。但是,如上图所示实现时,它不起作用。话虽如此,如果我点击Safari的“开发”菜单中的
禁用交叉源限制
,我上面的例子就可以了,这意味着这是一个CORS问题。哇。我想这是一次旅行。我的API不需要身份验证。我发现它在firefox中工作。