Request: self._qsからunescape()が欠落していると、認証でリクエストが中断されます

作成日 2015年06月01日  ·  4コメント  ·  ソース: request/request

http:// user:[email protected] 」などのhttp基本認証クレデンシャルを使用したGETリクエストは、「self._qs.unescapeは機能ではありません」というエラーで失敗します。

このエラーはrequest.jsで発生します:

  if (self.uri.auth && !self.hasHeader('authorization')) {
    var uriAuthPieces = self.uri.auth.split(':').map(function(item) {return self._qs.unescape(item)})
    self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) 
  }

Querystring.prototype.unescapeをグローバルunescape()またはdecodeURIComponentを使用するように変更すると、この問題が解決するようです。

環境:電子0.27.2(クロム43)

最も参考になるコメント

unscapeは非推奨になっていることに注意してください:(参照
したがって、self._qs.unescape(item)はdecodeURI(item)に置き換える必要があります

全てのコメント4件

これはhttps://github.com/request/request/pull/1600に関連している可能性がありますが、どうすればそれが可能かわかりません。 もっとコンテキストが必要ですが、そのバグを再現する短いコード例を提供できますか?

Browserifyが提供する「querystring」ライブラリにはquerystring.unescapeが含まれていないため、この割り当ては期待どおりに機能しないようです。

参照:
https://github.com/substack/node-browserify/issues/826
https://github.com/mike-spainhower/querystring/issues/4
https://github.com/Gozala/querystring/issues/6

このライブラリのバグが原因ではないように思われるため、この問題を解決します。

@andornautあなたはそれを電子に固定する方法を見つけましたか? まだこのエラーが発生します

unscapeは非推奨になっていることに注意してください:(参照
したがって、self._qs.unescape(item)はdecodeURI(item)に置き換える必要があります

このページは役に立ちましたか?
0 / 5 - 0 評価