jquery ajax请求api时出现CORS错误

CORS error when jquery ajax request on api

本文关键字:CORS 错误 ajax 请求 api jquery      更新时间:2023-09-26

我使用jQuery ajax发送请求到一些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'标头。因此,不允许访问源'http://www.mywebsite.com'。

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

我也试着用JSONP(dataType:' 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);
    });

Uncaught ReferenceError: E0002没有定义其中"E0002"是来自api

的响应字符串。

! !请帮助! !

有两种情况

  1. 如果你对api代码有控制权,那么

    在header中进行更改并添加原点。

  2. 如果您无法控制更改来自的CORS头api

    你只有一个选择,用你喜欢的任何语言创建一个后端代码(你自己的api),发出HTTP请求并获取数据。

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