java - 303 应答期间丢失 header

标签 java http http-headers http-status-code-303

我有以下处理程序,它将我的请求重定向到另一个处理程序(LoginHandler):

public class ValidationHandler implements HttpHandler
{
    @Override
    public void handle(HttpExchange httpExchange) throws IOException
    {
       // Serve for POST requests only
       if (httpExchange.getRequestMethod().equalsIgnoreCase("POST"))
       {  
           Headers hds = httpExchange.getResponseHeaders();
           hds.add("Content-type","text/html");
           hds.add("Location","/login");
           //WHERE I ADD THE USER
           hds.add("User", "someUser");
           //SEND A 303 to go to another handler (LoginHandler)
           httpExchange.sendResponseHeaders(303,0);  
           httpExchange.close();
       }
   }
}

这是以下 header ,LoginHeader:

public class LoginHandler implements HttpHandler
{

   @Override
   public void handle(HttpExchange httpExchange) throws IOException
   {
        //I can't read the header USER on the following line!
       httpExchange.getRequestHeaders().forEach((k,v) -> System.out.println(k + ':' + v));

        httpExchange.sendResponseHeaders(200,data.length());
        httpExchange.getResponseBody().write(data.getBytes());
        httpExchange.close();
   }
}

我无法在 requestHeaders 上读取我添加的 header USER。 我做错了什么?

提前致谢。

最佳答案

响应 header 不遵循 http 重定向。您可以将其作为 cookie 或作为查询参数包含在 Location header 中。

将您的位置更改为:

hds.add("Location","/login?User=someUser");

或将其添加为 SetCookie header :

hds.add("Set-Cookie", "User=someuser")

Set-Cookie 将告诉浏览器存储 cookie 并将其包含在返回服务器的所有请求中。将其包含在您的位置中将使其在处理重定向时可以一次性访问。

关于java - 303 应答期间丢失 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42489458/

相关文章:

在命令行上测试 HTTP,有没有比 cURL 更好的东西?

python - 如何在 Python 套接字应用程序中接受 GET 请求?

c# - 服务器无法在发送 HTTP header 后附加 header

java - 线性渐变绘画中使用的每种颜色的渐变大小相同 - Java 2D

java - 使用 MATLAB 编译器将 MATLAB 转换为 Java

java - 使用 Spring AOP 捕获 Spring 运行时异常

javascript - 正则表达式:匹配内容类型 http header 中的 javascript mime 类型

java - 无法处理与 jSTL 相关的 Jasper 验证错误

http - X-Cache header 说明

http - 将非标准 header 从 nginx 传递到 uwsgi