gpt4 book ai didi

java - 通过套接字从浏览器到服务器的基本 http 身份验证

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:07:22 28 4
gpt4 key购买 nike

我正在尝试编写一个简单的 Java 服务器,它从 Web 浏览器接收 HTTP GET 请求并发回一些数据。所有通信都通过套接字完成。

我能够处理请求,现在我正在尝试使用 BASIC AUTH 实现简单的身份验证,因此只有在请求 header 中提供正确的凭据时才会处理某些请求。为了简单起见,我只使用 http 协议(protocol)(而不是 https)。不过,我不确定如何访问 header 并读取服务器上的凭据:

服务器在本地主机上运行,​​端口 9000,这是我尝试处理的示例 URL:

http://user:password@localhost:9000/files/text?tid=file3

我打开套接字并读取所有内容:

InputStream input = clientSocket.getInputStream();

// Reading line by line with a BufferedReader
java.io.BufferedReader in = new java.io.BufferedReader(new String line;
while (!(line = in.readLine()).equals("")) {
System.out.println(line);
}

这是我得到的:

GET /files/text?tid=file3 HTTP/1.1
Host: localhost:9000
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/41.0.2272.76 Chrome/41.0.2272.76 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

我在 URL 中输入的身份验证凭据没有踪迹,因此我不确定如何解析请求。你能告诉我我在这里缺少什么吗?

我知道这个例子非常简单,还有更聪明的方法来实现它,但我很好奇如何在这个简单的模型案例中访问这些凭据。

最佳答案

使用类似 curl 的客户端:

$ curl -v -u user:password "http://localhost:9000/files/text?tid=file3"

由于 HTTP 是无状态的,发送 Authentication header 就足够了。这就是 curl 所做的。无需等待服务器返回 401

关于java - 通过套接字从浏览器到服务器的基本 http 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29603666/

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