mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
move baseurl after parsing orig source in urlproxyservlet
to calculate absolute href links for rewrite from unmodified source.
This commit is contained in:
parent
af6ad20728
commit
da413af664
|
@ -195,7 +195,7 @@ public class UrlProxyServlet extends ProxyServlet implements Servlet {
|
|||
response.setStatus(httpStatus);
|
||||
response.setContentType(mimeType);
|
||||
|
||||
if ((httpStatus) == 200 &&(mimeType != null) && (mimeType.startsWith("text/html") || mimeType.startsWith("text"))) {
|
||||
if ((httpStatus == HttpServletResponse.SC_OK) &&(mimeType != null) && (mimeType.startsWith("text/html") || mimeType.startsWith("text"))) {
|
||||
if (proxyResponseHeader.containsKey(HeaderFramework.TRANSFER_ENCODING) && proxyResponseHeader.get(HeaderFramework.TRANSFER_ENCODING).contains("chunked")) {
|
||||
proxyout = new ChunkedInputStream(proxyout);
|
||||
}
|
||||
|
@ -204,21 +204,11 @@ public class UrlProxyServlet extends ProxyServlet implements Servlet {
|
|||
final String servletstub = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getServletPath() + "?url=";
|
||||
Document doc;
|
||||
try {
|
||||
doc = Jsoup.parse(proxyout, "UTF-8", proxyurl.toString());
|
||||
} catch (Exception eio) {
|
||||
doc = Jsoup.parse(proxyout, UTF8.charset.name(), proxyurl.toString());
|
||||
} catch (IOException eio) {
|
||||
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Proxy: parser error on " + proxyurl.toString());
|
||||
return;
|
||||
}
|
||||
Element hd = doc.head();
|
||||
if (hd != null) {
|
||||
// add a base url if not exist (to make sure relative links point to original)
|
||||
Elements basetags = hd.getElementsByTag("base");
|
||||
if (basetags.isEmpty()) {
|
||||
Element newbasetag = hd.prependElement("base");
|
||||
String basestr = proxyurl.getProtocol() + "://" + hostwithport + proxyurl.getPath(); //+directory;
|
||||
newbasetag.attr("href", basestr);
|
||||
}
|
||||
}
|
||||
|
||||
Element bde = doc.body(); // start with body element to rewrite href links
|
||||
// rewrite all href with abs proxy url (must be abs because of <base> head tag
|
||||
|
@ -245,6 +235,17 @@ public class UrlProxyServlet extends ProxyServlet implements Servlet {
|
|||
}
|
||||
}
|
||||
|
||||
Element hd = doc.head();
|
||||
if (hd != null) {
|
||||
// add a base url if not exist (to make sure relative links point to original)
|
||||
Elements basetags = hd.getElementsByTag("base");
|
||||
if (basetags.isEmpty()) {
|
||||
Element newbasetag = hd.prependElement("base");
|
||||
String basestr = proxyurl.getProtocol() + "://" + hostwithport + proxyurl.getPath(); //+directory;
|
||||
newbasetag.attr("href", basestr);
|
||||
}
|
||||
}
|
||||
|
||||
// 8 - add interaction elements (e.g. proxy exit button to switch back to original url)
|
||||
// TODO: use a template file for
|
||||
//de.prepend("<div><form action='" + proxyurl + "'><input type='submit' value='YaCy stop proxy' /></form></div>");
|
||||
|
|
Loading…
Reference in New Issue
Block a user