java - 在 IBM Domino 中创建重定向的 HTTP 请求的方式
问题描述
我有一个按钮,它应该在执行 GET 请求后重定向用户。该按钮的代码如下:
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
var redirectUrl = 'https://oursystem.ru';
var errorRedirectUrl = 'https://oursystem.ru/errorPage';
var EGRZAuthObject = new ru.iteko.egrz.requestprocessors.EGRZAuthorization();
EGRZAuthObject.initializeAuthProcess(redirectUrl, errorRedirectUrl);
}]]></xp:this.action>
</xp:eventHandler>
该方法如下所示:
public static void initializeAuthProcess(String redirectUrl, String apiRedirectUrl) throws ClientProtocolException, IOException
{
HttpClient instance = HttpClientBuilder.create()
.setRedirectStrategy(new LaxRedirectStrategy()).build();
String urlToGoTo = AuthURLs.ESIALoginURL(redirectUrl, apiRedirectUrl);
System.out.println(urlToGoTo);
HttpGet httpGet = new HttpGet(urlToGoTo);
HttpResponse response1 = instance.execute(httpGet);
System.out.println("resp code " + response1.getStatusLine());
}
这里会发生什么:
- 我们向 API 发送 GET 请求
- API 将我们重定向到另一个服务以进行授权
但是,它似乎不起作用。请求成功执行,但似乎没有重定向。(当我们按下按钮时)。从前面的代码我们得到
http://lk.egrz-test.i-teco.ru/fws/api/esia/login?errorRedirectUrl=https://oursystem.ru&redirectUrl=https://oursystem.ru/errorPage
resp code HTTP/1.1 200 OK
如何使页面重定向到资源?
提前致谢。
解决方案
您在这里处理 2 个不同的 http 请求。第一个浏览器 -> XPage 和一个 XPage -> 后端。没有代码作用于第二个请求的结果。您可能在 response1 对象中有一个 300 类 (301, 302) 类型的响应。您需要将其交还给浏览器。
使用上下文对象来做到这一点。
推荐阅读
- spring - 在springboot中使用补丁映射
- azure - 是否可以将 Azure Kubernetes 中的共享 Azure 磁盘挂载到多个 POD/节点?
- python - 音乐机器人循环 discord.py
- c# - 是否可以使用 URL 将 .Obj 模型(如果可能,使用 .mtl)显示到 helix3d?WPF C#
- python - 使用 Python 将数据从 csv 写入 Postgres 并覆盖现有行
- r - 栅格数据的克里金预测 [r]
- typescript - 在 TypeScript 接口中分配给动态寻址的属性
- json - 如何通过 Scala 删除空的 json 对象
- google-apps-script - 如何使用基于短语的 Google Apps 脚本有条件地从各个位置复制数据?
- java - Spring JPA,OneToMany 引用主键的一部分