2012-08-01 64 views
0

我用仍然这里提供 Netty HTTP Authetication for Client 但例如401响应网状HTTP基本验证

当我打印请求头,我可以看到,所有的,除了一两件事好,授权是:

Authorization: YWRtaW46YWRtaW4= 

当我做同样的身份验证与Chrome浏览器的实例,我有:

Authorization: Basic YWRtaW46YWRtaW4= 

不兴特殊netty doc如何添加标头中的基本

当我通过类似tcpmon的工具捕获失败的消息并通过手动添加基本字符串重新发送消息时,它工作正常。

我的问题可能是如何在由netty提交的标题中添加Basic?

有人遇到过这个吗?

thnx

回答

1

我终于还是在org.jboss.netty.handler.codec.http.HttpHeaders#方法的addHeader一个黑客:

void addHeader(final String name, final Object value) { 
    validateHeaderName(name); 
    String strVal = toString(value); 
    HttpCodecUtil.validateHeaderValue(strVal); 
    int h = hash(name); 
    int i = index(h); 

    if (Names.AUTHORIZATION.equals(name)) strVal = "Basic "+strVal; 
    addHeader0(h, i, name, strVal); 
} 
1

您发布的第一个标题不正确。它必须看起来像Chrome一样。

因此,您需要调用HttpMessage.setHeader(...)并传递值。

+0

日Thnx但究竟args与投入HttpMessage.setHeader(...)来基本在你的头部? – tuxmobil 2012-08-03 02:21:43

+0

另请注意,在netty HttpCodecUtil验证你的标题名称和空格是不允许的,因此今天我必须做一个肮脏的黑客在我身边,使基本身份验证工作正常。 – tuxmobil 2012-08-03 02:27:41