Я знаю, что есть несколько сообщений по этой теме, но я немного смущен, почему я получаю запрос «Перекрестный запрос»: одна и та же политика происхождения запрещает чтение удаленного ресурса по адресу http://ipaddress/json. Это можно устранить, перемещая ресурс в тот же домен или разрешая CORS. " Существует API доступа, к которому я пытаюсь получить доступ, который в настоящее время находится на устройстве с IP-адресом xyz. Этот Rest API - это сценарий CGI, который я разработал в C.Смутно, почему я получаю запрос на перекрестный запрос Заблокированная ошибка
Прямо сейчас мое устройство, в котором я запускаю этот код, также подключено к тому же Wi-Fi, с IP-адресом xyz. Не означает ли это, что ресурс не является удаленным, поскольку он находится в одном домене?
Это мой код JavaScript, если кому-то интересно.
<button id="submit" onclick="fun()">Click here!</button>
<script language="JavaScript" type="text/javascript" src="jquery-3.1.0.min.js"></script>
<script>
function fun()
{
$.getJSON('http://ipaddress/json', function(data)
{
alert(data.toSource());
console.log(data);
});
}
</script>
Я не обязательно просить решения этого вопроса, так как я знаю, что есть много онлайн, но я более любопытно, почему я получаю эту проблему, и где я был не прав с моим пониманием этой ошибки. Я также попытался экспериментировать с несколькими другими публичными сайтами JSON:
Использование https://api.github.com/users/mralexgray/repos
не привело к этой ошибке и вернула правильную информацию.
Однако использование https://puppygifs.tumblr.com/api/read/json
привело к этой ошибке. Я предполагаю, что это может быть потому, что GitHub добавил CROS на свой сервер?
Любое понимание будет оценено по достоинству.
Вы можете тривиально проверить это самостоятельно. используйте что-то вроде httpfox в firefox для просмотра запросов из вашего браузера на указанный сайт и посмотрите, как выглядит ответ запроса «OPTIONS» (если есть) при попытке вызова ajax. –
Когда спецификация CORS говорит «тот же домен», это означает, что все имя после '//' должно быть таким же, как и исходное. Нахождение в одной сети или наличие того же суффикса домена недостаточно хороши. 'foo.domain.com' и' bar.domain.com' - это не тот же домен, что и '192.168.2.10' и' 192.168.2.20'. – Barmar
Если у вас есть кабельный модем, ваш общедоступный IP-адрес и IP-адрес вашего соседа, вероятно, будут такими же, за исключением последних двух цифр. Вы действительно считаете, что они находятся в одном домене только потому, что они используют одну и ту же кабельную компанию? – Barmar