Rubyists,如何在Rails中調試HTTP AUTH參數?
我的HTTP AUTH params出現在我的Rails 3應用程序中出現問題。密碼末尾有一些空格。我正在調試我的客戶端應用程序,看起來它正確地發送它。
我在我的應用程序這樣做:
params[:auth_username], params[:auth_password] = user_name_and_password(request)
然後我送到監獄長這一點。
我想查看原始數據,看看是否有空白。怎麼做?
編輯:我已經調試了httpd和精簡進程之間的線路,並且我確信數據正常傳輸。它在我的Rails 3.0.10中一定是錯誤的。我能夠解碼標題中出現的base64字符串,並且它不包含任何空格。
這真的看起來像BASE64解碼器問題。也許是填充問題。我的字符串是:
Qmxvb21iZXJnOnRjbG1lU1JT
其解碼爲
Bloomberg:tclmeSRS
正確使用非紅寶石的base64解碼器。即使在Ruby中:
>> Base64.decode64 "Qmxvb21iZXJnOnRjbG1lU1JT"
=> "Bloomberg:tclmeSRS"
我不明白。在Rails或類似的東西中搜索bugreport。
編輯:因此,原來我們的Apache httpd的代理增加了一些以頭:
Authorization: Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic
這導致在密碼的末尾不正確的字符,這是因爲:
>> Base64.decode64('Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic'.split(' ', 2).last || '')
=> "Bloomberg:tclmeSRS\005\253\""
現在的問題是 - 這是正確的?這是在httpd或rails的錯誤嗎?
似乎問題在於您的httpd配置。 ',基本'部分聽起來很奇怪。 – Jef
是我們的apache httpd配置中的一個錯誤:RequestHeader追加Authorization「Basic」提前 – lzap