Rubyists,
что-то не так с моими параметрами HTTP AUTH, которые поступают в мое приложение Rails 3.Пароль имеет пробел в конце.Я отлаживал свое клиентское приложение, и похоже, что оно отправляет его правильно.
Я делаю это в своем приложении:
params[:auth_username], params[:auth_password] = user_name_and_password(request)
Затем я отправляю это в Warden.
Я хотел бы увидеть необработанные данные, чтобы увидеть, есть ли пробелы.Как это сделать?
Редактировать : Я отладил соединение между httpd и тонким процессом, и я уверен, что данные поступают правильно.Должно быть, что-то не так в моем Rails 3.0.10.Мне удалось декодировать строку base64, которая идет в заголовках, и она не содержала пробелов.
Это действительно похоже на проблему с декодером BASE64.Может быть, проблема с отступами.Моя строка:
Qmxvb21iZXJnOnRjbG1lU1JT
, которая правильно декодирует до
Bloomberg:tclmeSRS
, используя не-Ruby base64 декодеры.Даже в Ruby:
>> Base64.decode64 "Qmxvb21iZXJnOnRjbG1lU1JT"
=> "Bloomberg:tclmeSRS"
Я не понимаю.Поиск сообщения об ошибке в Rails или что-то в этом роде.
Edit : Оказывается, наш Apache httpd proxy добавляет что-то в заголовок:
Authorization: Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic
Это приводит к неправильным символам в конце пароля, потому что:
>> Base64.decode64('Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic'.split(' ', 2).last || '')
=> "Bloomberg:tclmeSRS\005\253\""
Вопрос теперь - это правильно ?Это ошибка в httpd или rails?