Как получить свой настраиваемый заголовок вплоть до приложения Rails при работе с Nginx и Phusion Passenger? Возможно , см. Подробности ниже, но когда я просто использую панель заголовков в Paw, она не проходит.
Я использую Paw для тестирования и разработки некоторых конечных точек API вПриложение Rails. В моей среде разработки все работает как положено (приложение Rails 6 работает на macOS с использованием сервера rails (Puma)). В целях безопасности я использую пользовательский заголовок, который содержит личный токен авторизации. Когда я проверяю объект запроса Rails, в частности request.headers, я вижу все заголовки, включая мой настраиваемый заголовок, и я могу аутентифицироваться на основе его значения ✅.
Проблема возникает при запуске на стадии подготовки, гдеУ меня очень мало контроля над окружающей средой. Здесь то же самое приложение Rails работает под Phusion Passenger за Nginx. Когда я обращаюсь к одной и той же конечной точке с тем же запросом (просто меняя хост в запросе), пользовательский заголовок отсутствует. (Я проверил это, записав все заголовки в файл для каждого запроса в стадии подготовки)
Куда пропал заголовок? Поскольку среда в стадии подготовки отличается, я подозреваю, что Nginx или Fusion Passenger получает заголовок, но не передает его в мое приложение Rails. К сожалению, я не могу проверить это, так как у меня нет доступа к журналам (кроме журналов моего приложения Rails). Приложение предназначено для получения запросов от внешнего сервиса, поэтому я отправляю некоторые запросы через этот сервис, и заголовок присутствует. Это очень странно. Таким образом, некоторые заголовки пропускаются, а некоторые нет.
curl -X 'https://example.com/ivr/main_menu' -H 'X_JSW_AUTH_TOKEN':'my_tkn'
uri = URI('https://example.com/ivr/main_menu')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
req = Net::HTTP::Post.new(uri)
req.add_field "X_JSW_AUTH_TOKEN", "my_tkn"
res = http.request(req)
http POST 'https://example.com/ivr/main_menu' 'X_JSW_AUTH_TOKEN':'my_tkn'
- С помощью http gem от httprb 10
resp = HTTP.headers(X_JSW_AUTH_TOKEN: "my_tkn").post("https://example.com/ivr/main_menu")