2

httpc:request()関数によるhttpリクエストでクライアント認証用のユーザー/パスワードを指定するにはどうすればよいですか?

4

4 に答える 4

10

httpcモジュールがそのための機能を提供するとは思わない。それでも、実装するのは難しくありません(基本認証について話している場合)。結局のところ、これはBase64でエンコードされた「user:password」ペアを持つ単なる追加のリクエストヘッダーです。たとえば、Tsungのts_http_commonモジュールがそれを行います。

たとえば、基本認証を使用してHTTPPUTリクエストを実行する方法は次のとおりです。

auth_header(User, Pass) ->
    Encoded = base64:encode_to_string(lists:append([User,":",Pass])),
    {"Authorization","Basic " ++ Encoded}.

put_request(Url, User, Pass, Body) ->
    ContentType = "text/json",
    Headers = [auth_header(User, Pass), {"Content-Type",ContentType}],
    Options = [{body_format,binary}],
    httpc:request(put, {Url, Headers, ContentType, Body}, [], Options). 
于 2011-11-17T08:48:03.540 に答える
2

ドキュメントで、HTTPOptionsがパスとユーザーを保持していることがわかります。

HTTPOptions = http_options()
http_options() = [http_option()]
http_option() = {timeout, timeout()} | {connect_timeout, timeout()} | {ssl, ssloptions()} | {ossl, ssloptions()} | {essl, ssloptions()} | {autoredirect, boolean()} | {proxy_auth, {userstring(), passwordstring()}} | {version, http_version()} | {relaxed, boolean()} | {url_encode, boolean()}

ドキュメント:http ://www.erlang.org/doc/man/httpc.html#request-5

于 2011-11-16T17:24:27.740 に答える
1

ダイジェストの場合、基本と同じことを行う必要がありますが、それ以上のことを行う必要があります。通常、認証なしでページにアクセスし、「WWW-Authenticate」ヘッダー情報を取得してから、レルムとナンスを使用して「Authorization」ヘッダーを生成します。 http://en.wikipedia.org/wiki/Digest_access_authenticationの下部に適切な例があります。

一般に、ほとんどのユースケースでは、HTTPS+Basicで十分です。

于 2011-11-19T14:24:07.723 に答える
0

サポートしているibrowseを使用してみてください。私はそれを使用しています。https://github.com/cmullaparthi/ibrowse

于 2013-06-25T08:56:21.087 に答える