Распечатывать только заголовки в запросе Rails

Я знаю, как получить доступ к заголовку в Rails

request.headers["HEADER_NAME"]

Однако я хочу, чтобы все заголовки передавались браузером. Я вижу, что могу перечислить его

request.headers.each { |header| ... }

Однако это будет выплевывать как заголовки, так и другие переменные среды. Есть ли способ получить только заголовки?

Обновление 1

Моя проблема - это не взаимодействие. Моя проблема заключается в различении переменных среды и заголовков. Оба они будут сообщаться во время взаимодействия с использованием каждого или ключей.

Ответы

Ответ 1

Используя

request.headers.each { |key, value|  }

Это повторение запрошенного заголовка с помощью (ключ + значение), но если вы хотите использовать определенные значения, вы должны использовать имя ключа, например HTTP_KEYNAME, потому что всякий раз, когда поступает HTTP-запрос, он добавляет HTTP к ключам и уверен в верхнем регистре, потому что это чувствительный к регистру.

, например:

если мы передали auth_token как параметр запроса заголовка и хотим получить доступ, мы можем использовать это.

request.headers["HTTP_AUTH_TOKEN"]

Ответ 2

не уверен, что это полезно, но я использовал этот подход с грубой силой

request.env.select {|k,v|
  k.match("^HTTP.*|^CONTENT.*|^REMOTE.*|^REQUEST.*|^AUTHORIZATION.*|^SCRIPT.*|^SERVER.*")
}

Ответ 3

Вы можете попробовать это, чтобы получить только список заголовков по запросу

request.headers.first(50).to_h.keys

Он преобразует объект request.headers в массив, а затем в хэш, чтобы получить список всех ключей в запросе, который будет использоваться как

request.headers["keyname"]

Это может быть не очень эффективно, но я думаю, что он может выполнить эту работу.

Надеюсь, что это поможет.

Ответ 4

Вы должны быть в состоянии сделать

request.headers.each { |key, value|  }

В общем случае, когда итерация по хэш-рубину смотрит на арность вашего блока и дает вам пару (ключ + значение) или отдельные переменные. (Хэш в этом случае является объектом, внутренним для объекта заголовков)

Ответ 5

Возможно, вы, вероятно, ищете:

request.env 

В основном это создаст Ruby Hash всего объекта запроса.

Для получения дополнительной информации, проверьте этот вопрос: Как просмотреть весь HTTP-запрос в Rails