Вход

Просмотр полной версии : запрос json возвращает status 0


OnLik
27.02.2019, 12:53
Добрый день пишу дипломную работу необходимо реализовать подключение к api (https://app.swaggerhub.com/apis/serp83/fapi/1.0.1)
Для теста пытаюсь отправить запрос:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<button onclick="load()" id="button">Загрузить </button>
<script>
function load() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://fapi.iisis.ru/fapi/v2/manufacturerList?mfd=merc', true);
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
alert(xhr.status + ': ' + xhr.statusText + ': ' +xhr.responseText);
}
}
</script>
</body>
</html>
Но запрос возвращает только tatus 0.
Когда пробую отправить запрос сюда (http://httpbin.org/#/HTTP_Methods/get_get) всё работает отлично.
Ещё заметка когда проверяю тут (https://bertal.ru/index.php?a6236818/fapi.iisis.ru/fapi/v2/manufacturerList?mfd=merc#h)
Ели установлена галка показывать код страницы то работает, если снять галку то нет.

Nexus
27.02.2019, 12:57
https://learn.javascript.ru/xhr-crossdomain

OnLik
27.02.2019, 13:22
https://learn.javascript.ru/xhr-crossdomain
Спасибо за такой скорый ответ, но Всё равно возвращается тот же результат.
Вот так вот попробовал:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<button onclick="load()" id="button">Загрузить</button>
<script>
function load() {
var XHR = ("onreadystatechange" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
var xhr = new XHR();
xhr.open('GET', 'https://fapi.iisis.ru/fapi/v2/manufacturerList?mfd=merc', true);
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
alert(xhr.status + ': ' + xhr.statusText + ': ' +xhr.responseText);
}
}
</script>

</body>

</html>

Nexus
27.02.2019, 13:26
OnLik, статью прочитайте, а не код оттуда копируйте.

OnLik
27.02.2019, 15:05
Nexus, Я прочитал статью, потом ещё раз перечитал. Я понимаю что сервер в ответ не отправляет мне в заголовке 'Access-Control-Allow-Origin' и по этому браузер считает что сервер не дал ему доступ.
хотя я и использую простой вариант запроса (GET).
И тут же возникает вопрос как это можно обойти, ведь на вот этом сервисе всё работает bertal.ru (https://bertal.ru/index.php?a6236818/fapi.iisis.ru/fapi/v2/manufacturerList?mfd=merc#h). Хотя ему возвращён вот такой заголовок:
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Wed, 27 Feb 2019 10:49:39 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 689664
Connection: close
Cache-control: private, max-age=0

Nexus
27.02.2019, 15:18
ведь на вот этом сервисе всё работает
Запрос отправляет не клиент, а сервер, поэтому все работает.
Хотите обойти - проксируйте свой запрос.

OnLik
27.02.2019, 15:49
Nexus,
Спасибо, буду дальше разбираться