Документ перенес ошибку
После прочтения различных постов из stackru и некоторой помощи от других парней я выполнил аутентификацию в своем коде, а также попытался избежать перенаправления, которое происходило ранее, так как я новичок во всех этих вещах. Я начал получать ту же ошибку обратно 302 Найдено, документ перемещен.
Я пытаюсь сделать ajax-вызов в другой домен локально со своего компьютера, написав некоторый прокси-код в jsp. И это мой код JQuery AJAX, который вызывает страницу proxy.jsp.
var search_agile_metadata = 'https://doc.xyz.com/rest-services/services/get?id=';
var on_show_info = function() {
var outOfDomainCall = search_agile_metadata + current_doc.id;//An XML document
request_meta_info = $.ajax({
url: "proxy.jsp?url=" + outOfDomainCall,
type: 'GET',
success: on_get_metadata,
error: on_get_metadata_error
});
И мой файл proxy.jsp:
<%@ page language="java" import="org.apache.http.impl.client.AbstractHttpClient,
org.apache.http.client.methods.HttpUriRequest,
org.apache.http.client.methods.HttpGet,
org.apache.http.protocol.HttpContext,
org.apache.http.impl.client.DefaultHttpClient,
org.apache.http.HttpResponse
,org.apache.http.HttpRequest,
java.net.HttpURLConnection,
java.net.URL,
java.util.Collection,
org.apache.commons.httpclient.HttpClient,
org.w3c.dom.*,
javax.xml.parsers.DocumentBuilder,
javax.xml.parsers.DocumentBuilderFactory,
java.net.*,
java.io.*,
org.apache.http.protocol.BasicHttpContext,
org.apache.http.params.BasicHttpParams,
org.apache.http.params.HttpParams,
org.apache.http.Header,
org.apache.http.client.params.HttpClientParams"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
String a_Url = request.getParameter( "url" ) ;
URL url = new URL (a_Url);
String encoding = new String(
org.apache.commons.codec.binary.Base64.encodeBase64
(org.apache.commons.codec.binary.StringUtils.getBytesUtf8("test:test"))
);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setFollowRedirects(false);
connection.setRequestProperty ("Authorization", "Basic " + encoding);
InputStream content = (InputStream)connection.getInputStream();
BufferedReader in =
new BufferedReader (new InputStreamReader (content));
String line;
while ((line = in.readLine()) != null) {
out.println(line);
}
%>
<%
final HttpParams params = new BasicHttpParams();
HttpClientParams.setRedirecting(params, false);
%>
И когда я получу ответ от сервера. Я получаю эту ошибку. Любая идея, почему я получаю эту ошибку обратно..
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://login.xyz.com/siteminder/cert/13890/smgetcred.scc?TYPE=16777217&REALM=-SM-amp;SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=-SM-3FfhzbcpbcT6grIIICnrPzvFIbogCZlcnVHG8&TARGET</p>
<hr>
<address>Apache/2.0.58 (Unix) DAV/2 mod_jk/1.2.28 Server at doc.xyz.com Port 80</address>
</body></html>
Любая помощь будет оценена..
1 ответ
Я не думаю, что HTTPS так сильно вас портит, но 401 Unauthorized - это ключ. Проверьте, что написано в протоколе: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. Ваш запрос каким-то образом должен учитывать заголовок авторизации. Я делал это раньше с помощью библиотеки HttpClient: http://hc.apache.org/httpclient-3.x/authentication.html