【问题标题】:Pass POST parameters to another JSP file将 POST 参数传递给另一个 JSP 文件
【发布时间】:2015-06-11 04:08:58
【问题描述】:

我有两个独立的网络应用程序。让我们说 app1app2。两者都托管在具有不同域的不同服务器中。

现在在 app1 中有一个链接。单击该链接时,我必须使用用户名和密码调用 app2 的登录页面并显示响应。但用户名和密码不应在 URL 中显示。

目前的方法:

现在我通过创建 iframe 并在查询字符串中传递用户名和密码参数来完成我的任务。

点赞:www.app2.com/login.jsp?username=abc&password=xxx

通过点击上面的 URL,用户登录并呈现主页。

必需的方法

我想用用户名和密码作为发布参数调用另一个应用程序的登录页面。而且我想在不泄露登录凭据的情况下在服务器端完成所有工作。

注意:我可以控制 app1,但我无法调整 app2 的代码。我正在使用 JSP、struts 1.3 开发 app1。

两个应用程序的用户名和密码不同。 App1 是我的应用,app2 是第三方报告服务。

希望你明白我的意思!!

【问题讨论】:

  • @Arvind yaar 我不能对 app2 做任何事情,因为它是第三方 saas 应用程序。它提供报告服务。我为我的应用为不同角色的用户创建了报告。
  • 您是否尝试过在您的 app1 中使用带有 method='post' 的表单标签将其提交给 app2?

标签: java javascript jsp


【解决方案1】:

您可以使用 post 方法在另一个页面中发送参数。为此,您可以使用 AJAX POST 请求到另一个页面并获取该页面的响应。

【讨论】:

  • 亲爱的,我不想使用客户端 ajax 或表单提交。因为我必须传递用户名和密码。如果我这样做,任何人都可以通过查看源或查看 js 文件的代码来查看用户名和密码。
  • 如果您在 AJAX 中使用 POST 方法。那么没有人可以看到它
  • 但我必须在 post 参数中发送用户名和密码。用户名和密码是硬编码的,我不是要求用户提供用户名和密码。
  • 兄弟,你没有明白我的意思。为了清晰的震动。 $.ajax({ url:"www.app2.com/login.jsp", data:{username:"abc",password:"xxx"}, method:"post", success:function(){}, error :功能(){} });如果我像上面那样编写代码,任何人都可以查看这个文件。现在我希望你明白我的意思。
【解决方案2】:

您要求的是单点登录。

最好的方法是编写一个 cookie,应用程序(而不是域)都可以读取。在 app1.domain.com 中写入 domain.com 的 cookie 并在 app2.domain.com 中读取相同的内容

Update#1 - .NET 代码示例——虽然问题是针对 Java 的,但以下内容应该有助于理解逻辑

FormsAuthentication.SetAuthCookie(Session["userName"].ToString(), false);

//Below code modifies the cookie's domain
System.Web.HttpCookie MyCookie = System.Web.Security.FormsAuthentication.GetAuthCookie(User.Identity.Name.ToString(), true);
MyCookie.Domain = "abc.com";
Response.AppendCookie(MyCookie);
Response.Redirect("http://subdomain.abc.com/");

【讨论】:

  • 您可以跨域共享 cookie。我以 .NET sn-p 为例更新了我的答案(Update#1)
  • @S.Krishna 感谢您的宝贵回答。根据我的问题,我无法对另一个应用程序(即 app2)做任何事情。这是一项第三方服务,它需要用户名和密码,无论是通过获取还是邮寄。但是对于用户我不想暴露用户名和密码。
  • @Arvind 我相信你很清楚这个问题。
【解决方案3】:

请参考here...给出的答案

老实说,我会为此而努力......

ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet");

// change your request and response accordingly like setting the parametrs, body etc

dispatcher.forward(request, response);

【讨论】:

  • 你能告诉我我必须在哪里传递用户名和密码以及我的第二个应用程序的 url 吗?我只有一个 jsp 页面,我必须使用用户名和密码作为帖子参数调用另一个应用程序的另一个页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 2014-01-12
  • 1970-01-01
  • 2012-04-11
  • 2013-08-05
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多