Рассмотрим эту информацию заголовка:JQuery базовой аутентификации провал
ИнформацияAccept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Authorization:Basic TWluZVN0YXI6TWluZVN0YXI=
Cache-Control:max-age=0
Connection:keep-alive
Host:*
Этот заголовок для URL. Я пытаюсь получить значение json из этого URL-адреса. Этот url, когда один доступ к нему всплывает для имени пользователя и пароля.
TRY1:
$.ajax({
type:'GET',
url: 'http://'+domainName+':9898/*/*',
dataType:"json",
username: '*',
password: '*',
async: false
}).responseText;
TRY2
$.ajax({
type:'GET',
url: 'http://'+domainName+':9898/jolokia/*/*',
dataType:"json",
crossDomain: true,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa('*' + ":" + '*'));
},
async: false
}).responseText;
TRY3:
попытался добавить это в web.xml из котом.
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request- Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param- value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Но до сих пор я не могу получить доступ к URL, по-прежнему дает следующее сообщение об ошибке:
GET http://***.**.**.**:9898/*/* 401 (Unauthorized)
jquery.min.js:5 XMLHttpRequest cannot load http://**.**.**.**:9898/*/*. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin http://localhost:8080 is therefore not allowed access. The response had HTTP status code 401.(index):1 Uncaught SyntaxError: Unexpected token u
мне просто нужно, чтобы получить доступ к URL и получить значения JSon из этого URL. URL-адрес защищен именем пользователя и паролем, который я знаю.
Я не понимаю, как это может быть проблема с перекрестным доменом. Когда я удалить проверку подлинности из URL, то этот код работает отлично:
$.ajax({
type:'GET',
url: 'http://'+domainName+':9898/*/*',
dataType:"json",
async: false
}).responseText;
Но как только я проверить подлинность URL код не удается, после применения выше шагов тоже код не удается.
У вас проблема с перекрестным доменом. Попробуйте свою первую версию с dataType «jsonp» и дополнительную опцию xhrFields: { withCredentials: true } Читайте здесь для получения дополнительной информации по теме: http://stackoverflow.com/questions/5750696/how-to-get-a -cross-origin-resource-sharing-cors-post-request-working – bouscher
@bouscher я пытался с jsonp, но это даже дает ошибку как неожиданное исключение. –
Возможно, это связано с тем, что сервер не отвечает в json формате. Вы пытались использовать POST вместо GET, а также уверены, что порт 9898 верен? Кажется, он используется для протокола UDP/TCP, а не HTTP. Также попробуйте сделать правильную ошибку: error: function (httpReq, status, exception) { alert (статус + "" + исключение); }, чтобы лучше отлаживать – bouscher