Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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 在api上请求jquery ajax时出现CORS错误_Javascript_Jquery_Json_Ajax_Api - Fatal编程技术网

Javascript 在api上请求jquery ajax时出现CORS错误

Javascript 在api上请求jquery ajax时出现CORS错误,javascript,jquery,json,ajax,api,Javascript,Jquery,Json,Ajax,Api,我正在使用jQueryAjax向一些API发送请求。由于CORS策略,我在浏览器控制台上遇到了CORS错误 这里是代码 $.ajax({ url: sendHere,//api url type: 'GET', contentType: 'text/plain', crossDomain: true, beforeSend: function(xhr){ xhr.withCredentials

我正在使用jQueryAjax向一些API发送请求。由于CORS策略,我在浏览器控制台上遇到了CORS错误

这里是代码

$.ajax({
        url: sendHere,//api url
        type: 'GET',
        contentType: 'text/plain',
        crossDomain: true,
        beforeSend: function(xhr){
            xhr.withCredentials = true;
        },
    }).done(function (result) {

        console.log(result);

    }).error(function (err) {
        //console.log(err);
    });
错误

请求的资源上存在“Access Control Allow Origin”标头。因此,不允许访问源“”

我试图通过安装一个chrome扩展来解决这个问题,以允许跨源请求。这个扩展以某种方式解决了我的问题,并得到了api的响应。但是安装一个扩展并不好

我还尝试使用JSONP(数据类型:'JSONP')发出请求,但api给出的响应不是json格式,而是字符串,因此它给出了一个错误

使用JSONP编码

$.ajax({
        url: sendHere,//api url
        type: 'GET',
        crossDomain: true,
        dataType:'jsonp',
    }).done(function (result) {

        console.log(result);

    }).error(function (err) {
        //console.log(err);
    });
未捕获引用错误:未定义E0002 其中“E0002”是来自api的响应字符串


!!!请帮忙

有两种情况-

  • 如果您可以控制api代码,那么

    在标题中进行更改,并添加原点

  • 如果您无法控制更改来自的CORS标头 api

    您只有一个选项:使用您喜欢的任何语言创建后端代码(您自己的api),以发出http请求并获取数据。现在使用您自己的api在前端获取数据


  • cors错误是由浏览器维护的跨源请求策略,以确保安全。
    要解决您的问题,您必须在服务器编码中允许cors请求,或者如果您无法访问服务器api代码,则必须从服务器向api服务器进行api调用

    您可以按照此链接更改
    控制台.log(结果)时发生的情况语句为
    console.log(JSON.stringify(result))
    @DavidR即使在console.log(JSON.stringify(result))上也会发生错误,您是否可以尝试在
    dataType:'jsonp',
    语句之后添加
    jsonp:'callback',
    ?我已删除
    type:'GET'
    ,并将
    contentType
    contentType:'text/plain',
    更改为
    contentType:'application/JSON',
    并使用一个在这里运行良好的Web服务测试了代码=>“谢谢”这很有效。。。我使用PHP作为我的后端代码,并使用它的CURL将请求发送到API,通过该API,我成功地捕获了响应,非常感谢again@SelvesanMalakar如果这对你有效,你可能会认为这是正确的答案。它可能会帮助其他人找到相同/相似问题的正确答案。