我想开发一个用户可以输入网址的平台,然后我的网站将在iframe
中打开网页。现在,用户只需右键单击就可以修改他的网站,我将为他提供“删除此元素”,“复制此元素”等选项。我差不多了。许多网站在iframe
中完美开放,但是对于一些网站,一些错误已经出现。我无法找出原因,所以请求你的帮助。
我已经解决了XSS问题等其他问题
这是我遵循的程序: -
使用JavaScript并将请求发送到我的Java服务器,该服务器连接到用户指定的URL并获取HTML,然后使用Jsoup HTML解析器将相对URL转换为绝对URL,然后使用Java将HTML保存到我的磁盘。然后我将保存的HTML呈现到我的iframe
。
出了问题?
一些网站工作正常,但有些网站没有。
例如: -
当我试图打开http://www.snapdeal.com时,它给了我
Uncaught TypeError: Cannot read property 'paddingTop' of undefined
错误。我不明白为什么会发生这种情况..
更新 我真的很想知道这是如何实现的? @ http://www.proxywebsites.in/browse.php?u=Oi8vd3d3LnNuYXBkZWFsLmNvbQ%3D%3D&b=13&f=norefer
答案 0 :(得分:1)
2个问题,选择你喜欢的任何一个:
答案 1 :(得分:0)
我的代理服务器端代码: -
DateFormat df = new SimpleDateFormat("ddMMyyyyHHmmss");
String dirName = df.format(new Date());
String dirPath = "C:/apache-tomcat-7.0.23/webapps/offlineWeb/" + dirName;
String serverName = "http://localhost:8080/offlineWeb/" + dirName;
boolean directoryCreated = new File(dirPath).mkdir();
if (!directoryCreated)
log.error("Error in creating directory");
String html = Jsoup.connect(url.toString()).get().html();
doc = Jsoup.parse(html, url);
links = doc.select("link");
scripts = doc.select("script");
images = doc.select("img");
for (Element element : links) {
String linkHref = element.attr("abs:href");
if (linkHref != "") {
element.attr("href", linkHref);
}
}
for (Element element : scripts) {
String scriptSrc = element.attr("abs:src");
if (scriptSrc != "") {
element.attr("src", scriptSrc);
}
}
for (Element element : images) {
String imgSrc = element.attr("abs:src");
if (imgSrc != "") {
element.attr("src", imgSrc);
log.info(imgSrc);
}
}
现在我只是返回保存我的html文件的路径 这是关于我的服务器代码
答案 2 :(得分:0)
你可以尝试一件事。在您的代理脚本中,您将网页保存在磁盘上,然后加载到iframe中。我认为不是在iframe中加载您保存在磁盘上的页面,而是尝试在浏览器中打开该页面。所有那些将其页面重新加载到iframe中的网站现在都会打开而不会出现任何错误。 试试这个我认为这是一项工作