鉴于我有两个不同的应用程序服务器。一个是我的 Play 应用程序,另一个是在同一服务器上运行的另一个应用程序。
用户在 Play 应用程序中打开一个链接,该链接重定向到来自其他应用程序的 URL。
public class DocumentController extends Controller {
public Result open(String id) {
String url = generateURL(id);
return redirect(url);
}
}
- play框架应用URL:http://localhost/document?id=1
- 其他应用程序 URL:http://localhost/document?internalid=adsf34rt3j43h43bn34jje3bsfdf29&otherinternalid=sdfne9239245ngdh
此时,如果用户打开第一个 URL,他会被重定向到另一个 URL,然后在浏览器中看到另一个 URL。我希望该 URL 与第一个 URL 保持相同,但仍加载并显示第二个 URL 的内容。用户应该只能在浏览器导航栏中看到第一个 URL。
解决方案应集成到现有 Controller 中。我正在寻找的是“redirect(url)”的替代品。我正在考虑类似“load(url)”或 loadInFrame(url) 的内容。
这可能吗?
<小时/>rorschach 建议的解决方案
这与我想象的不太一样,但它有效:)
我添加了一个新 View :
@(url: String)
<!DOCTYPE html>
<html lang="de">
<head>
</head>
<body>
<iframe src="@url"></iframe>
</body>
</html>
现在,我不再重定向到 URL,而是使用 iframe 中的给定 URL 呈现这个新 View :
return ok(iframeView.render(url));
最佳答案
您可以添加 <iframe>
到加载该网站的页面或使用更奇特的解决方案 - 在 JavaScript 中对另一侧发出请求,然后用该侧替换页面的完整内容。
编辑:(评论后)
我发现你已经完全改变了问题的前提。哦,好吧..
- 在 Controller 中返回您自己的页面,其中包含该站点的 URL
<iframe>
- 在您的 Controller 中请求该网站的 HTML 内容并将其填充到您自己的页面中。
- 返回自己的页面,用JS加载对方网站并替换内容
- 让事情变得不必要的复杂,并开始搞乱网络服务器的配置,让它在其级别上进行重定向
关于java - 加载 url 而不更改 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45637614/