【问题标题】:API get cross domain issues - Cross-Origin Read Blocking (CORB)API 获取跨域问题 - 跨域读取阻塞 (CORB)
【发布时间】:2019-06-21 13:43:09
【问题描述】:

我正在尝试使用 API 根据用户 ID 获取有关特定用户的信息。我需要使用基本身份验证并在我的调用中传递一些标头。 我得到了这个:

Cross-Origin Read Blocking (CORB) blocked cross-origin response  "rest/user/getProfile?callback=jQuery224033348109431646855_1548684613983&userId=24068..." with MIME type text/plain.

我的代码:

$.ajax
  ({
    type: 'GET',
    crossDomain: true,
    async: false,
    url: 'example_URL_/api/user/getProfile',
    headers: {
      "Accept": "application/json",
      "Content-Type": "application/json",
    },
    beforeSend: function (xhr) { xhr.setRequestHeader("Authorization", "Basic ZHVubmVzYXBpskjoi43u5409543o9tI654kjhugjy"); },
    dataType: 'jsonp',
    data: { "Id": "1234" },
    success: function (data) {
      console.log(data);
    },
    error: function (xhr, status, error) {
      console.log(xhr);
      console.log(status);
      console.log(error);
    }
  });

我有什么遗漏吗?

【问题讨论】:

  • 您不能从 javascript 代码中设置 CORS。
  • 是的,那是我的测试,谢谢...
  • 您遇到的问题是尝试进行 JSONP 调用并尝试设置标头。 JSONP 调用使用脚本标记,而不是 XMLHttpRequest

标签: javascript ajax rest api get


【解决方案1】:

你说:

dataType: 'jsonp',

...所以 jQuery 发出一个 JSONP 请求(即插入一个 <script> 元素)。

浏览器向 URL 发出请求,服务器说:

Content-Type: text/plain

由于纯文本文档不是 JavaScript 程序,浏览器拒绝执行它并抛出一个 CORB 错误。

JSONP 响应必须是 application/javascript,而不是 text/plain

您需要:

  • 不请求 JSONP
  • 更改服务器以响应 JSONP

另外:由于您使用的是 JSONP,typecrossDomainasyncheadersxhr.setRequestHeader 属性无效。

既然你说你需要设置基本身份验证,那就排除了选项二。您不能为此使用 JSONP。

【讨论】:

  • 感谢您的回复。我无法访问服务器,所以我需要使用 javascript 来完成。当我将 dataType 更改为 JSON 时,我被 CORS 策略阻止了。所以我试图让它以某种方式工作
  • @Jdoe — 同源策略旨在防止您的 JavaScript 访问其他网站愿意与浏览器用户共享的数据。如果您完全在客户端 JS 中解决这个问题,那就太愚蠢了。
【解决方案2】:

在您的 API 中配置 CORS 以接受所有域,或输入您用来发送请求的域。

如果您的 API 是由 PHP 创建的,这里是一个示例:

<?php
 header("Access-Control-Allow-Origin: *");

或者,如果您使用的是第三方 API,请尝试查看文档。我敢肯定会有一部分谈论 CORS。

【讨论】:

  • 谢谢,它是第三方 API,我无权访问服务器设置。
猜你喜欢
  • 2018-11-25
  • 1970-01-01
  • 2019-08-05
  • 2019-12-25
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多