有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通用域名格式。太阳网httpserver Java httpserver基本身份验证问题

我有一个Java HttpServer的实现,我用它来测试它的基本功能,这意味着我可以动态地调整提供给客户机的内容。我的代码使用的是apache http客户端

我想使用这个实现测试一些身份验证,但我遇到了一些问题。我的问题是,我的代码从不进行身份验证,发送初始请求,服务器用401进行响应,但http客户端从未响应。它会浏览身份验证类型列表,但从不选择基本类型

如果我使用浏览器连接到同一个url,系统会提示我提交凭据时它会登录。如果我更改代码,使代码尝试登录到其他服务器,那么它是成功的,因此我知道两端都可以工作

我已经在客户端和服务器端对连接进行了有线共享,我可以看到的区别是:

  • 连接成功后,后续请求将作为POST而不是GET发送
  • 当我的服务器响应时,身份验证头是Www而不是Www(当它工作时)

编辑:

通过查看http代码,区分大小写不应导致任何问题。第一个响应是失败的,第二个响应是有效的:

失败

GET /testing HTTP/1.1
Host: 192.168.30.65:8000
Connection: Keep-Alive
User-Agent: Apache-HttpAsyncClient/4.0-beta1 (java 1.5)

HTTP/1.1 401 Unauthorized
Content-length: 0
Www-authenticate: Basic realm="myRealm"

工作

GET /svn HTTP/1.1
Host: svnserver
Connection: Keep-Alive
User-Agent: Apache-HttpAsyncClient/4.0-beta1 (java 1.5)

HTTP/1.1 401 Authorization Required
Date: Mon, 16 Apr 2012 09:51:58 GMT
Server: Apache/2.2.3 (CentOS)
WWW-Authenticate: Basic realm="Subversion Repository"
Content-Length: 475
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at svnserver Port 80</address>
</body></html>

GET /svn HTTP/1.1
Host: svnserver
Connection: Keep-Alive
User-Agent: Apache-HttpAsyncClient/4.0-beta1 (java 1.5)
Authorization: Basic YQVkd2Gm3GS6dXNjbMk5

共 (0) 个答案