【问题标题】:javascript Cross-Origin Read Blocking (CORB) blocked cross-origin responsejavascript Cross-Origin Read Blocking (CORB) 阻止了跨域响应
【发布时间】:2021-10-30 09:56:42
【问题描述】:

我正在尝试从 API 检索 JSON 响应。我不断收到“Cross-Origin Read Blocking (CORB) blocked cross-origin response”,导致错误。我已经在网上搜索,试图找出可能是什么问题,但我失败了。

API 必须返回一个生成的会话。

当我检查标头时,我看到请求附加了多个标头。

有趣的是,当我将 URL 直接复制到我的网络浏览器时,我会得到带有值的 json 响应,但是一旦我在 ajax 函数中使用该 url,我就会被拒绝。

    jQuery.ajax({
        type: 'GET',
        crossOrigin: true,
        url: "https://apitest.mobzgo.co.za/getSession?username=********&passingword=*****",
        dataType: "jsonp",
        contentType: "jsonp;",
        success: function (response) {
          alert(JSON.stringify(response));
        },
        error: function (jqXHR, exception, errorThrown) {
            var msg = '';
            if (jqXHR.status === 0) {
                msg = 'Not connect.\n Verify Network.';
            } else if (jqXHR.status === 404) {
                msg = 'Requested page not found. [404]';
            } else if (jqXHR.status === 500) {
                msg = 'Internal Server Error [500].';
            } else if (exception === 'parsererror') {
                msg = errorThrown;
            } else if (exception === 'timeout') {
                msg = 'Time out error.';
            } else if (exception === 'abort') {
                msg = 'Ajax request aborted.';
            } else {
                msg = 'Uncaught Error.\n' + jqXHR.responseText;
            }
            alert(msg);
        } 
    });

【问题讨论】:

    标签: javascript ajax xmlhttprequest cross-browser cross-domain


    【解决方案1】:

    当您尝试将来自不同来源的某些数据视为不同类型的数据时,会发生CORB错误。

    例如<img src="http://example.com/foo.html"> - HTML 文档不是图像。

    在这种情况下,您说dataType: "jsonp",,因此您试图将 URL 视为 JavaScript(因为 JSONP 是特殊格式的 JavaScript)。它不是 JavaScript 所以,而不是尝试执行它并从中抛出异常,它只是在检测到它不是 JS 时抛出异常。


    旁白:contentType: "jsonp;", — JSONP 不是内容类型并且您正在发出 GET 请求,因此无论如何都没有请求正文来描述类型。更重要的是,JSONP 请求不能设置 content-type。这在很多方面都是错误且毫无意义的。


    还要注意 JSONP 是 讨厌的。它是有限的并且有安全问题。在今天构建 API 时,没有充分的理由支持使用 JSONP 的跨域请求。我们现在有 CORS。 CORS 更安全、更强大。

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 2021-05-22
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多