【问题标题】:GET request with query and digest http authorization带有查询和摘要 http 授权的 GET 请求
【发布时间】:2010-06-25 17:53:56
【问题描述】:

我有需要使用的 java 服务(不能修改它)和使用摘要 HTTP 授权的 Web 服务器。我正在使用 HttpWebRequest 与服务器通信(使用 GET 方法)。提供了身份验证所需的 NetworkCredentials。但是调用 GetResponse() 会产生错误 400(错误请求)。

地址:http://info.server.com/someFolder/servlet.do?cmd=get_info&param=value

请求示例(不完整,只有相关的东西):

GET /someFolder/servlet.do?cmd=get_info&param=value HTTP/1.1

主机:info.server.com

响应:需要 401 授权

第二次请求:

GET /someFolder/servlet.do?cmd=get_info&param=value HTTP/1.1

主机:info.server.com

授权:摘要 ... uri="/someFolder/servlet.do" ...(显然不是完整的标题)

第二个响应:400 错误请求

我已经在 Web 浏览器(IE、Firefox)上尝试过这个请求并且它可以工作,但似乎浏览器将整个请求 uri 放在 Authorization 标头的 uri 部分,而 HttpWebRequest 如上所述格式化标头。 有谁知道如何强制 HttpWebRequest 将整个 uri 放入 Authorization 标头中? 或者也许还有其他解决方案?

感谢您的帮助!

【问题讨论】:

    标签: httpwebrequest get digest-authorisation


    【解决方案1】:

    我们遇到了同样的问题,并已将其追踪到授权标头中的 URL。看起来 HttpWebRequest 只发送主机名而不是完整的 URL。它省略了:

    ?cmd=get_info&param=value
    

    来自 URL。 IE8 和 Chrome 都使用完整的 URL,包括参数。

    我们已经能够通过摘要授权的自定义实现来解决此问题。见this answer

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 2015-11-27
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      相关资源
      最近更新 更多