Я пытаюсь загрузить междоменную HTML-страницу с помощью AJAX, но, если dataType не равен «jsonp», я не могу получить ответ. Однако при использовании jsonp браузер ожидает MIME-тип скрипта, но получает «text / html».
Мой код для запроса:
$.ajax({
type: "GET",
url: "http://saskatchewan.univ-ubs.fr:8080/SASStoredProcess/do?_username=DARTIES3-2012&_password=P@ssw0rd&_program=%2FUtilisateurs%2FDARTIES3-2012%2FMon+dossier%2Fanalyse_dc&annee=2012&ind=V&_action=execute",
dataType: "jsonp",
}).success( function( data ) {
$( 'div.ajax-field' ).html( data );
});
Есть ли способ избежать использования jsonp для запроса? Я уже пробовал использовать параметр crossDomain, но это не сработало.
Если нет способа получить HTML-контент в jsonp? В настоящее время консоль сообщает "неожиданный <" в ответе jsonp.
javascript
jquery
ajax
cross-domain
xonorageous
источник
источник
Ответы:
jQuery Ajax Notes
Есть несколько способов преодолеть междоменный барьер:
Есть несколько плагинов, которые помогают с междоменными запросами:
Берегись!
Лучший способ решить эту проблему - создать собственный прокси-сервер в серверной части, чтобы ваш прокси-сервер указывал на службы в других доменах, поскольку в серверной части не существует такого же ограничения политики происхождения . Но если вы не можете этого сделать в бэк-энде, обратите внимание на следующие советы.
Предупреждение!
Использование сторонних прокси-серверов не является безопасной практикой, поскольку они могут отслеживать ваши данные, поэтому их можно использовать с общедоступной информацией, но никогда с личными данными.
В приведенных ниже примерах кода используются jQuery.get () и jQuery.getJSON () , оба являются сокращенными методами jQuery.ajax ().
CORS везде
CORS Anywhere - это прокси-сервер node.js, который добавляет заголовки CORS к проксируемому запросу.
Чтобы использовать API, просто добавьте URL к URL API. (Поддерживает https : см. Репозиторий github )
Если вы хотите автоматически включить междоменные запросы при необходимости, используйте следующий фрагмент:
Независимо от происхождения
Каким бы ни был Origin , это междоменный доступ jsonp . Это альтернатива anyorigin.com с открытым исходным кодом .
Чтобы получить данные с google.com, вы можете использовать этот фрагмент:
Прокси-сервер CORS
Прокси- сервер CORS - это простой прокси-сервер node.js для включения запросов CORS для любого веб-сайта. Это позволяет коду javascript на вашем сайте получать доступ к ресурсам в других доменах, которые обычно блокируются из-за политики того же происхождения.
Как это работает? Прокси-сервер CORS использует совместное использование ресурсов между источниками, которое является функцией, которая была добавлена вместе с HTML 5. Серверы могут указать, что они хотят, чтобы браузеры разрешали другим веб-сайтам запрашивать ресурсы, которые они размещают. CORS Proxy - это просто HTTP-прокси, который добавляет заголовок к ответам, в котором говорится, что «любой может запросить это».
Это еще один способ достичь цели (см. Www.corsproxy.com ). Все, что вам нужно сделать, это удалить http: // и www. из проксируемого URL-адреса и добавьте к URL-адресу
www.corsproxy.com/
Прокси-браузер CORS
Недавно я нашел этот, он включает в себя различные утилиты Cross Origin Remote Sharing, ориентированные на безопасность. Но это черный ящик с Flash в качестве бэкэнда.
Вы можете увидеть это в действии здесь: Прокси-браузер CORS
Получите исходный код на GitHub: koto / cors-proxy-browser
источник
$.ajaxPrefilter
и он отлично работал. Большое спасибо!Вы можете использовать Ajax-cross-origin как плагин jQuery. С помощью этого плагина вы используете
jQuery.ajax()
кросс-домен. Для этого используются сервисы Google:Использовать очень просто:
Вы можете прочитать здесь: http://www.ajax-cross-origin.com/
источник
crossOrigin
Опция jQuery, конечно же, ничего не делает для смягчения политики одинакового происхождения. Я бы удалил этот ответ, если бы могЕсли внешний сайт не поддерживает JSONP или CORS, единственный вариант - использовать прокси.
Создайте сценарий на своем сервере, который запрашивает этот контент, а затем используйте jQuery ajax, чтобы запустить сценарий на вашем сервере.
источник
Просто поместите это в заголовок своей страницы PHP, и он не будет работать без API:
или
или
источник
$_SERVER['HTTP_ORIGIN']
взялось. Я не нашел его ни в документации по PHP, ни где-либо еще.Я публикую это на случай, если кто-то столкнется с той же проблемой, с которой я столкнулся прямо сейчас. У меня есть термопринтер Zebra, оснащенный сервером печати ZebraNet, который предлагает пользовательский интерфейс на основе HTML для редактирования нескольких параметров, просмотра текущего состояния принтера и т. Д. Мне нужно получить статус принтера, который отображается на одной из этих html-страниц, предлагаемых сервером ZebraNet, и, например, alert () - сообщение пользователю в браузере. Это означает, что мне сначала нужно получить эту html-страницу в Javascript. Хотя принтер находится в локальной сети компьютера пользователя, та же политика происхождениявсе еще твердо стоит на моем пути. Я пробовал JSONP, но сервер возвращает html, и я не нашел способа изменить его функциональность (если бы мог, я бы уже установил волшебный заголовок Access-control-allow-origin: *). Поэтому я решил написать небольшое консольное приложение на C #. Для правильной работы он должен запускаться от имени администратора, иначе он будет: D исключение. Вот некоторый код:
Все, что нужно сделать пользователю, - это запустить это консольное приложение от имени администратора. Я знаю, что это тоже ... неприятно и сложно, но это своего рода обходной путь к проблеме политики домена в случае, если вы не можете каким-либо образом изменить сервер.
изменить: из js я делаю простой вызов ajax:
HTML-код запрошенной страницы возвращается и сохраняется в переменной данных .
источник
Чтобы получить данные с внешнего сайта, используя локальный прокси-сервер, как предлагает jherax, вы можете создать страницу php, которая извлекает контент для вас с соответствующего внешнего URL-адреса, а затем отправляет запрос на получение этой странице php.
в качестве прокси-сервера php вы можете использовать https://github.com/cowboy/php-simple-proxy
источник
В
URL
наши дни ваш код не работает, но ваш код можно обновить с помощью этого рабочего решения:источник
Вам нужен прокси-сервер CORS, который передает ваш запрос из вашего браузера для запроса службы с соответствующими заголовками CORS . Список таких сервисов представлен во фрагменте кода ниже. Вы также можете запустить предоставленный фрагмент кода, чтобы увидеть связь с такими службами из вашего местоположения.
источник
Догадаться. Вместо этого использовал это.
источник