2012-03-06 7 views
2

基本アクセス認証によって保護されているリソースへのPOST中に問題が発生しています。ここで はコードですが、私は@mikeal's requestを使用しています:基本アクセス許可保護リソースへのポスト

request.post({ 
    uri: "http://user:[email protected]/resource", 
    json: { 
    "id": "1", 
    "par1": "a", 
    "par2": "b" 
    } 
}, function (error, response, body) { 
    console.log(error); 
    console.log(response); 
    console.log(body); 
}); 

私は応答と体の両方にエラーが発生し{ [Error: Parse Error] bytesParsed: 0 }undefinedを持っています。 「user:password」部分を削除すると、401 HTTP Basic:Access deniedが正しく取得されます。

私の場合のように保護されたリソースにJSONをPOSTする方法があるかどうか知っていますか?もしそうでなければ、私はhttpモジュールの方法に行く必要があると信じていますが、それはもっと冗長なので、最終的なリソースとして残しています。

更新:これをできるだけシンプルにするために、このファイルを新しいディレクトリに移動し、npm install requestを実行しました。問題がなくなり、byteParsedがどこから来たのかを確認し、このテストを実行していたディレクトリにあるexpressで必要とされる "恐ろしい"の中にあることがわかりました。今はちょっと混乱しています。

答えて

2

あなたは、この規則にあなたの要求にヘッダを追加する必要がありますBase64にパスワードとHTTPヘッダにエンコードされた文字列を追加します:ユーザ名:

http://en.wikipedia.org/wiki/Basic_access_authentication

基本的には、文字列をエンコードする必要があり

許可:Basic "Base64(username:password)"

jqueryまたはjavascriptでヘッダを追加することが可能かどうかわかりません。ごめんなさい。ここ

ルック:http://api.jquery.com/extending-ajax/#Transports

+0

おかげ。クリーンなディレクトリにコードを移動することで問題が「解決」されることがわかったので、私は質問を更新しました。私は前のフォルダでそれが必要なので "解決する"と言ったが、私はいくつかの非互換性の問題があると思う。私はあなたがリンクしているものを見ていますが、確かに可能なことがあります。 –

+0

ありがとう!不思議なことに、これは私がすでに使っているライブラリです。私はそこからソリューションをほとんどコピーしました。私は今夜それを調べます。再度、感謝します。 –

4

私はこのようにそれをやった:あなたの答えのための

var options = {     
    method: 'POST',    
    uri: 'http://your.url.com/', 
    form: {     
    field1: 'somevalue',    
    field2: 666.66 
    },      
    headers: {    
    'Authorization': 'Basic ' + new Buffer("username:password").toString('base64')     
    } 
};           
request(options, function(error, response, body) { 
    // do stuff 
}); 
関連する問題