获取请求:具有相同密钥的多个标头选项?

时间:2012-11-05 11:10:54

标签: .net api rest authorization restsharp

我正在使用API​​,它需要这样的标题:

  

授权:ClientKey keyhere
  授权:UserKey key2here

当我将这个参数添加到RestSharp的请求时,这样:

request.AddHeader("Authorization", "ClientKey 111111");
request.AddHeader("Authorization", "UserKey 222222");

我知道,只写了最后一个。 这是因为他们有相同的钥匙。 但我怎么能避免呢?

据我所知,这是服务器端的错误行为,但此代码已在其他平台的生产中使用。

更新

我找到了解决方案:

request.AddHeader("Authorization", "ClientKey 111111, UserKey 222222");

1 个答案:

答案 0 :(得分:3)

请参阅HTTP RFC的14.8 Authorization部分:

  

希望通过服务器验证自身的用户代理 -         通常,但不一定,在收到401回复后 - 确实如此         通过包含一个Authorization request-header字段         请求。

另见RFC 2617的3.2.2 The Authorization Request Header部分:

  

客户端需要重试请求,并通过授权      标题行,根据上述框架定义,      利用如下。

两个引号都谈到 标题。根据RFC,可以可以多次设置Authentication标头。但是服务器无法根据RFC选择包含凭据的 one 标头。

服务器仅使用一个(最后一个此类标头)正常工作。您的客户端已损坏。