0

ここで提供されている例を使用し ました クライアント用の Netty HTTP 認証です が、まだ 401 応答があります

リクエストヘッダーを印刷すると、1つのことを除いてすべてが良好であることがわかります.Authorizationは次のとおりです。

Authorization: YWRtaW46YWRtaW4=

たとえば、Chrome で同じ認証を行うと、次のようになります。

Authorization: Basic YWRtaW46YWRtaW4=

ヘッダーに Basic を追加する方法について、netty doc に特別なことはありません

tcpmonなどのツールで失敗したメッセージをキャッチし、Basic 文字列を手動で追加してメッセージを再送信すると、正常に動作します。

私の質問は、 netty によって送信されたヘッダーに Basic を追加する方法でしょうか?

誰かが前にこれに直面しましたか?

thnx

4

2 に答える 2

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);
}
于 2013-02-05T03:48:32.140 に答える
1

投稿された最初のヘッダーは正しくありません。Chrome のものに似ているはずです。

したがって、必要な場合は、HttpMessage.setHeader(...) を呼び出して値を渡すだけです。

于 2012-08-02T12:53:40.420 に答える