Запрос на перекрестный домен ajax
Я хочу получить страницу ответа html с URL-адреса перекрестного домена.
для этого я использую запрос ajax как,
$.ajax({
type: 'GET',
url: "http://wcidevapps.com/salescentral/idisk/0001000383/iDisk",
dataType: "jsonp",
success: function (response) {
$(response).find('li a').each(function () {
listHref.push($(this).attr('href'));
});
}
});
Но после запроса он не ответит каким-либо результатом.
Ответы
Ответ 1
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
function NameAFunctionName() {
$.ajax({
url: 'http://wcidevapps.com/salescentral/idisk/0001000383/iDisk',
type: 'GET',
dataType: 'json',
headers: {
//WRITE IF THEIR HAVE SOME HEADER REQUEST OR DATA
},
crossDomain: true,
success: function (data, textStatus, xhr) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
}
</script>
Ответ 2
Проверить документацию:
http://api.jquery.com/jQuery.ajax/
crossDomain (по умолчанию: false для запросов одного домена, true для междоменных запросов)
Тип: Boolean
Если вы хотите принудительно выполнить запрос crossDomain (например, JSONP) в том же домене, установите для параметра crossDomain значение true. Это позволяет, например, перенаправить серверную сторону в другой домен. (версия добавлена: 1.5)
Ответ 3
Мое подозрение в том, что вы видите проблему, потому что запрашиваемая вами страница не отвечает с ответом json (p), но отвечает перенаправлением на:
http://wcidevapps.com/salescentral/idisk/0001000383/iDisk/
(обратите внимание на конечную косую черту)
который затем возвращает тип содержимого:
Content-Type:text/html;charset=ISO-8859-1
Изменить: Если вы намерены извлечь данные из перекрестного домена данных сайта, для дальнейшего анализа с помощью script, я предлагаю выбрать одно из следующих значений:
Успение 1: вы контролируете страницы на сервере http://wcidevapps.com"
В этом случае у вас есть два варианта: либо добавить заголовок CORS "Access-Control-Allow-Origin: *" в ответ (и настроить клиентский вызов ajax() с помощью dataType: "html" ), либо создать специальная страница JSON (P), которая предоставляет те же данные, что и JSON (с дополнением) (и настраивает вызов ajax() клиента как в OP, с dataType: "jsonp" )
Успение 2: вы НЕ контролируете страницы на сервере http://wcidevapps.com
В этом случае единственным вариантом, о котором я могу думать, является настройка прокси-сервера на сайте, который вы контролируете. Попросите прокси-сервера проксировать запросы/ответы на " http://wcidevapps.com", но добавьте заголовок CORS "Access-Control-Allow-Origin: *" для ответа (и настроить клиентский вызов ajax() с помощью dataType: "html" )
Ответ 4
Если вы используете веб-службу asp.net, вам нужно добавить это в файл webconfig;
<system.webServer>
<directoryBrowse enabled="true"/>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>