Can';在Google Chrome中,我无法从我的Java服务器应用程序接收纯文本

Can';在Google Chrome中,我无法从我的Java服务器应用程序接收纯文本,java,google-chrome,Java,Google Chrome,我有一个用Java编写的小服务器应用程序,它向浏览器发送纯文本,如下所示: Server.java import java.io.IOException; public class Server { private int portNumber; public Server(int portNumber) { this.portNumber = portNumber; } public void start() { //Thread pool final Execu

我有一个用Java编写的小服务器应用程序,它向浏览器发送纯文本,如下所示:

Server.java

import java.io.IOException;
public class Server {

private int portNumber;

public Server(int portNumber) {
    this.portNumber = portNumber;
}

public void start() {
    //Thread pool
    final ExecutorService threadPool = Executors.newFixedThreadPool(10);
    Runnable serverTask = new Runnable() {

        @Override
        public void run() {
            try {
                ServerSocket ss = new ServerSocket(portNumber);
                while(true) {
                    Socket clientSocket = ss.accept();
                    threadPool.submit(new ClientTask(clientSocket));
                }
            } catch(IOException e) {
                e.printStackTrace();
            }
        }
    };
    Thread clientThread = new Thread(serverTask);
    clientThread.start();
}
}
ClientTask.java

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class ClientTask implements Runnable{

private final Socket clientSocket;

public ClientTask(Socket clientSocket) {
    this.clientSocket = clientSocket;
}

@Override
public void run() {
    System.out.println("Got a client...");

    try (BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            DataOutputStream os = new DataOutputStream(clientSocket.getOutputStream());){
        os.writeBytes("HTTP/1.1 200 OK\r\n");
        os.writeBytes("Content-Type: text/plain");
        os.writeBytes("\r\n");
        os.writeBytes("\r\n");
        os.writeBytes("hello");
        os.writeBytes("\r\n");
        os.flush();
        System.out.println("About to close..");
    } catch(IOException e) {
        e.printStackTrace();
    } finally {
        try {
            clientSocket.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

}
public class Main {

public static void main(String[] args) {
    Server server = new Server(1111);
    server.start();
}
}
Main.java

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class ClientTask implements Runnable{

private final Socket clientSocket;

public ClientTask(Socket clientSocket) {
    this.clientSocket = clientSocket;
}

@Override
public void run() {
    System.out.println("Got a client...");

    try (BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            DataOutputStream os = new DataOutputStream(clientSocket.getOutputStream());){
        os.writeBytes("HTTP/1.1 200 OK\r\n");
        os.writeBytes("Content-Type: text/plain");
        os.writeBytes("\r\n");
        os.writeBytes("\r\n");
        os.writeBytes("hello");
        os.writeBytes("\r\n");
        os.flush();
        System.out.println("About to close..");
    } catch(IOException e) {
        e.printStackTrace();
    } finally {
        try {
            clientSocket.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

}
public class Main {

public static void main(String[] args) {
    Server server = new Server(1111);
    server.start();
}
}
我的服务器在端口1111上运行,当我键入
http://localhost:1111
在Safari中,它工作得非常好(我在浏览器中看到“hello”),但在Chrome中则不行。
Chrome的情况如何

编辑:控制台网络选项卡的屏幕截图
Chrome可能会从http://重定向到https://


要防止此行为,请转到chrome://net-internals/#hsts,在Delete domain security Policys(删除域安全策略)下输入localhost,然后按Delete(删除)按钮。

您在
DataOutputStream
中发送的输出是错误的,基本上Chrome会接受有效的HTTP响应来接收

这是您的客户端更新(我将让您优化代码)

在铬合金上测试,并通过端子使用
curl

curl -v localhost:1111
* Rebuilt URL to: localhost:1111/
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 1111 (#0)
> GET / HTTP/1.1
> Host: localhost:1111
> User-Agent: curl/7.54.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Date: Sat, 24 Mar 2018 11:27:15 GMT
< Server: Java Server/12234
< Content-Type: text/plain
< Content-Length: 5
< Expires: Sat, 24 Mar 2018 11:27:15 GMT
< Last-modified: Sat, 24 Mar 2018 11:27:15 GMT
<
* Closing connection 0
Hello%
curl-v localhost:1111
*重建的URL到:localhost:1111/
*正在尝试::1。。。
*TCP_节点集
*已连接到本地主机(::1)端口1111(#0)
>GET/HTTP/1.1
>主机:localhost:1111
>用户代理:curl/7.54.0
>接受:*/*
>
*HTTP 1.0,假设在正文之后关闭
您的请求在chrome开发者控制台中是什么样子的?你能用“网络”选项卡截图吗?@sfat我已经编辑了我的问题,你是在代理网络后面吗?在safari之外的其他浏览器上,它还能工作吗?另外,你可能想在chrome中尝试
匿名模式
,可能会出现某种缓存问题。我也在Firerox和匿名模式下尝试过,但没有成功。请发布您的
js
代码(如果有)和您请求的完整服务器端方法