Fetch API Блокировка перекрестного происхождения (CORB) заблокировала перекрестный ответ с типом MIME text / html - PullRequest
0 голосов
/ 27 января 2020

Попытка извлечь данные из API для отображения виджетов на странице. Вот мой запрос на выборку:

  var protocolToUse = (location.protocol == "https:") ? "https://" : "http://";
  // url to fetch data from
  const url = `${protocolToUse}polls-api.predictinteractive.com/get/catalog`;

  fetch(url)
    // Transform data into JSON
    .then((results) => results.json())
    .then(function(data) {
      // Get the results
      let widgets = data;
      // For each widget, store their category and group name
      for (i=0; i < widgets.length; i++) {
        var category = widgets[i]["category"];
        var group = widgets[i]["group"];
        // This is the iframe link
        var src_script = `${protocolToUse}w1.predictinteractive.com/widgets/poll_widget/index.html?{"category":"${category}"}`;
        // Create a unique variable name for each widget
        var named = nameInstance();
        // The function createWidget formats the details to display the iframe and its details
        named = new createWidget(
          category,
          group,
          src_script
        );

        // This function appends each widget to an array called allWidgets
        appendToArray(named);

      }

      // Get the widget in the allWidgets array
      var firstWidget = allWidgets.shift();

      // // Append the widget to the page
      widgetContainer.appendChild(firstWidget);
    })
    .catch(function(error) {
      console.log(error);
    });

Виджет iframe не отображается, я думаю, это может быть из-за этого предупреждения, которое я получаю в консоли:

Cross-Origin Read Blocking (CORB) blocked cross-origin response https://w1.predictinteractive.com/widgets/poll_widget/index.html?{%22category%22:%22election-2020%22} with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details.

I ' м на усадьбе тоже. Дайте мне знать, если мне потребуется предоставить больше информации, я буду признателен за любую помощь.

1 Ответ

0 голосов
/ 27 января 2020

На данный момент я просто играю с API, я не могу воссоздать вашу проблему.

Можете ли вы сказать мне, какой браузер вы используете? На firefox по крайней мере я получаю ответ от API с необходимыми данными.

let protocolToUse = (location.protocol == "https:") ? "https://" : "http://";
const url = `${protocolToUse}polls-api.predictinteractive.com/get/catalog`;


async function fetchWídget(url) {
  const widgets = await fetch(url).then(res => res.json());
  console.log(widgets)

  for (i = 0; i < widgets.length; i++) {
    let category = widgets[i]["category"];
    let group = widgets[i]["group"];
    let src_script = `${protocolToUse}w1.predictinteractive.com/widgets/poll_widget/index.html?{"category":"${category}"}`;
    let named = nameInstance();
    named = new createWidget(
      category,
      group,
      src_script
    );
    appendToArray(named);
  }

  let firstWidget = allWidgets.shift();
  widgetContainer.appendChild(firstWidget);
}
fetchWídget(url);

РЕДАКТИРОВАТЬ: у меня нет названной функции, но, как вы можете видеть, я получаю данные.

...