CORS для чтения текстового файла из pastebin

Я надеюсь использовать CORS для загрузки фрагментов кода из pastebin, а затем обрабатывать их в браузере.

Некоторый код находится здесь: http://www.boisvert.me.uk/opendata/sparql_aq+.html

Код выделен, и есть варианты его запуска и т. Д.

Я хотел бы предоставить простую услугу, в которой пользователь сохраняет текст в любом месте, а затем запрашивает:

http://www.boisvert.me.uk/opendata/sparql_aq+.html?sparqlURL=любой-url

например, URL-адрес:

http://pastebin.com/raw.php?i=grUU9zwE

http://www.boisvert.me.uk/opendata/sparql_aq+.html?sparqlURL=http%3A%2F%2Fpastebin.com%2Fraw.php%3Fi%3DgrUU9zwE

Но при использовании CORS репозиторий возвращает пустой файл. Блокируется ли CORS некоторыми системами (например, pastebin.com?) или что я делаю неправильно?

Я прикрепляю изображения из отладчика firefox, показывая, если я не упускаю из виду, пустой ответ, возвращаемый CORS, и, если это помогает, заголовки GET.

Сетевой инструмент Firefox - запрос OK, но результат пустТа же проблема, другой кадр

Наконец, мой код CORS:

function CORSRequest(url) {
   var xhr = new XMLHttpRequest();

   if ("withCredentials" in xhr) {
      // Check if the XMLHttpRequest object has a "withCredentials" property.
      // "withCredentials" only exists on XMLHTTPRequest2 objects.
      xhr.open("GET", url, true);
   } else if (typeof XDomainRequest != "undefined") {
      // Otherwise, check if XDomainRequest.
      // XDomainRequest only exists in IE, and is IE's way of making CORS requests.
      xhr = new XDomainRequest();
      xhr.open("GET", url);
   } else {
      // Otherwise, CORS is not supported by the browser.
      throw new Error('CORS not supported');
   }

   if (xhr) {
      xhr.onload = function() {
         // process the response.
         document.getElementById("sparql").value = xhr.responseText;
      };
      xhr.onerror = function() {
         alert('Not loading.');
      };
   }
   xhr.send();
}

person boisvert    schedule 25.04.2015    source источник
comment
CORS должен быть включен на стороне сервера, вы не можете включить его с клиента. Вместо этого вы можете сделать ajax-запрос к некоторому сценарию на стороне сервера на вашем сервере, который захватит любой URL-адрес и вернет его.   -  person Patrick Evans    schedule 26.04.2015
comment
Это бы объяснило... RTFM   -  person boisvert    schedule 26.04.2015


Ответы (2)


Чтобы заставить его работать со стороны клиента, вы можете использовать прокси-сервер CORS, такой как cors.io, или вы можете написать свой собственный.

В случае использования cors.io вы можете добавить URL-адрес службы следующим образом.

https://cors.io/?http://pastebin.com/raw.php?i=grUU9zwE

person Rodrirokr    schedule 26.06.2018
comment
Больше недоступно - person Alex Pavtoulov; 07.11.2020

После того, как вы купите учетную запись Pastebin Pro, вставки вашей учетной записи будут автоматически доступны для публичного доступа через CORS (используйте необработанную ссылку)

person anneb    schedule 06.02.2019
comment
у них больше нет профессиональных аккаунтов - person Alex Pavtoulov; 07.11.2020