Распечатывать только заголовки в запросе 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