我使用了这里提供的示例 Netty HTTP Authetication for Client 但仍有401响应
当我打印请求标题时,我可以看到一切都很好,除了一件事,授权是:
Authorization: YWRtaW46YWRtaW4=
例如,当我使用Chrome进行相同的身份验证时,我有:
Authorization: Basic YWRtaW46YWRtaW4=
关于如何在标题中添加Basic
的netty doc没什么特别之处当我使用tcpmon之类的工具捕获失败的消息并通过手动添加基本字符串重新发送消息时,它可以正常工作。
我的问题可能是如何在netty提交的标题中添加Basic?
之前有人遇到过这种情况吗?
日Thnx
答案 0 :(得分:1)
您发布的第一个标题不正确。它必须看起来像Chrome。
因此,您需要调用HttpMessage.setHeader(...)并传递值。
答案 1 :(得分: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);
}