gpt4 book ai didi

java - nginx 中代理服务器发出重定向时如何更改位置 header

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:21 28 4
gpt4 key购买 nike

我有在jetty服务器上运行的java应用程序,其中后端是java Rest Web服务,前端是使用Angular JS完成的。当我的 JSESSIONID cookie 过期时,nginx 会响应 302 重定向以进行其余 api 调用。例如http://www.example.com/rest/myapi将返回 302 并将位置 header 设置为 http://www.example.com/ 。在这种情况下,浏览器将进行内部重定向到我的主页。有什么方法可以将位置 header 重写为www.example.com/rest/myapi 这样我就可以在使用 302 执行内部重定向时获得从浏览器调用的正确 api。这是我的其余 api 的 nginx 配置。

# Reverse proxy to the java API.
location ~ ^/rest|redeem|gym|registrant|review|gymview|resources {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Connection "";
proxy_set_header X-Scheme $scheme;
proxy_pass http://api;
proxy_http_version 1.1;
proxy_connect_timeout 60;
proxy_read_timeout 180;
}

我如何重写位置 header 以再次调用相同的 api,因为它调用我的主页并获取 HTML 响应而不是 JSON,这会破坏我的页面。预先感谢您!!

最佳答案

1) 您可以解决 Java 应用程序中的重定向问题,这样您就可以返回一些带有 401(未经授权)响应代码的 JSON,而不是将用户重定向到主页并显示 HTML 页面。

2) 当然,您也可以使用 proxy_redirect 将它们获取到主页以外的任何位置。例如

   proxy_redirect   ~https://$host/       https://$host/rest/myapi;

但是要聪明一点 - 如果请求来自这个特定的 URL,您将进入重定向循环。

关于java - nginx 中代理服务器发出重定向时如何更改位置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755941/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com