将POST参数传递给另一个JSP文件
我有两个独立的Web应用程序。可以说app1和app2。两者都托管在具有不同域的不同服务器中。将POST参数传递给另一个JSP文件
现在在app1中有一个链接。在点击该链接时,我必须使用用户名和密码调用app2的登录页面并显示响应。但是,用户名和密码不应在URL中可见。
当前的方法:
现在,我通过创建一个iframe并通过用户名和密码PARAMS查询字符串来完成我的任务。
像:www.app2.com/login.jsp?username=abc &密码= XXX
通过点击上面的网址,获取用户登录和主页呈现。
必需的方法
我要打电话与用户名和密码后参数另一个应用程序的登录页面。我想在服务器端做所有我的东西,而不公开登录凭证。
注:我能控制的APP1只是我不能调整的APP2代码。我正在开发使用JSP的app1,struts 1.3。
这两个应用程序的用户名和密码都不相同。 App1是我的应用程序,app2是第三方报告服务。
希望你明白了我的观点!
你要求的是单点登录。
最好的方法是写一个应用程序(而不是域)可以读取的cookie。在app1.domain.com中为domain.com写入cookie,并在app2.domain.com中读取相同内容
更新#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代码片段为例更新了我的答案(更新#1) –
@ S.Krishna感谢您提供宝贵的答案。根据我的问题,我无法对另一个应用程序(即app2)执行任何操作。它是一个第三方服务,它需要用户名和密码,通过get或post。但对于用户,我不想公开用户名和密码。 –
@Arvind我相信你非常清楚的问题。 –
您可以使用post方法在另一个页面中发送参数。为此,您可以将AJAX POST请求用于其他页面,并获取该页面的响应。
Dar亲爱的我不想使用客户端Ajax或表单提交。因为我必须通过用户名和密码。如果我这样做,任何人都可以通过view-source或通过查看js文件的代码来查看用户名和密码。如果您在AJAX中使用POST方法,则为 –
。那么没有人可以看到它 –
,但我必须在发布参数中发送用户名和密码。用户名和密码是硬编码的,我不要求用户提供用户名和密码。 –
请参考给定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);
你能告诉我,我必须通过用户名和密码,还有我的第二个应用程序的网址?我只有一个jsp页面,我必须使用用户名和密码作为后续参数调用另一个应用程序的另一个页面。 –
@Arvind yaar我不能做任何事情APP2因为它是一个第三方的SaaS应用程序。它提供报告服务。我为我的应用创建了不同角色用户的报告。 –
您是否曾尝试在app1中使用'method ='post''的表单标记将其提交给app2? – Arvind