【问题标题】:Generate HTTP response in java proxy server在 java 代理服务器中生成 HTTP 响应
【发布时间】:2014-04-27 23:35:23
【问题描述】:

当客户端尝试访问被禁止的页面时,如何向客户端显示 HTTP 403 响应?我有下面的代码,但它没有在客户端浏览器上显示任何内容。可能是一个微不足道的错误,但我是新手,所以任何东西都有帮助。

                            // If webpage is not allowed, then redirect user to a blocked
            // URL page
            if (!checkHost(fin, requestSplit[3].split("\r")[0])) {
                System.out.println("DON'T SHOW");

                OutputStream to_client = clientSocket.getOutputStream();
                PrintStream ps = new PrintStream(to_client);
                ps.print("HTTP/1.1  403 Forbidden\r\n");
                ps.print("Connection: close\r\n");
                ps.print("\r\n");
                ps.close();

【问题讨论】:

  • 有什么问题?只需发回一个有效的 HTTP 403 响应。语法很简单,例子比比皆是。
  • 我更新了问题。谢谢
  • 您的编辑仍然错误。使用线路终止符重试。

标签: java http proxy response


【解决方案1】:
  1. 您应该关闭PrintStream, 而不是Socket.
  2. HTTP 中的行终止符定义为 \r\n,而不是 println() 所做的任何事情,这取决于平台。
  3. 在 404 响应中设置 Content-typeDateAccept-Ranges 标头没有意义。
  4. incomingOS 是一个糟糕的输出流名称。

您的编辑不符合上述 (2)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2020-03-23
    • 2012-09-12
    • 2013-05-03
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多