【问题标题】:CORS error when jquery ajax request on apiapi上的jquery ajax请求时出现CORS错误
【发布时间】:2016-11-10 06:11:42
【问题描述】:

我正在使用 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”标头出现在请求的资源上。 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 is not defined 其中“E0002”是来自 api 的响应字符串

!!!请帮忙!!!

【问题讨论】:

  • console.log(result); 语句更改为console.log(JSON.stringify(result)); 时会发生什么
  • @DavidR 即使在 console.log(JSON.stringify(result)) 上也会发生错误
  • 您可以尝试在您的dataType: 'jsonp', 语句后添加jsonp: 'callback', 吗?
  • 我已删除 type: 'GET' 并将 contentTypecontentType: 'text/plain', 更改为 contentType: 'application/json', 并使用在这里运行良好的 web 服务测试代码 => jsfiddle.net/9pqhwrpv/2

标签: javascript jquery json ajax api


【解决方案1】:

有两种情况——

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

    更改标题并添加您的来源。

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

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

【讨论】:

  • "thanks" 这行得通...我使用 PHP 作为我的后端代码,并使用它的 CURL 向 API 发送请求,通过它我成功捕获响应 再次非常感谢
  • @SelvesanMalakar 如果这对您有用,您可能希望接受它作为正确答案。它可能会帮助其他人找到相同/相似问题的正确答案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 2019-09-16
    • 2021-02-16
    • 2022-01-06
    • 2019-09-09
    • 2018-09-27
    • 2020-10-12
    • 2015-12-15
    相关资源
    最近更新 更多