blob: f24e406f26fefaf4e3c834c0d2d5c7e82769f768 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
---
title: "HTTP Headers in Rails: Hyphens, Underscores, and a terrible day"
categories:
- blog
abstract: Rack modyfies incomming requests's headers!
date: 2023-02-01T18:00:51+01:00
year: 2023
draft: false
tags:
- rack
- Ruby-on-Rails
- headers
- magic
---
Everyone's favorite magician, Ruby on Rails, does it again.
As it turns out, [Rack modifies incoming requests' headers](https://github.com/rails/rails/blob/aaf7bed00338c3a97dbb12b3c82a30ae34e67876/actionpack/lib/action_dispatch/http/headers.rb#L12) and normalizes they keys. So, every time the client/proxy sends something cool like `A-HEADER`, the key is modified, so some characters become underscore. Therefore in Rails code need to access `A_HEADER`, and if I had known that yesterday, my day would be much more pleasant.
> Also note that when headers are mapped to CGI-like variables by the Rack
>
> server, both dashes and underscores are converted to underscores.
>
> (as [per documentation](https://github.com/rails/rails/blob/aaf7bed00338c3a97dbb12b3c82a30ae34e67876/actionpack/lib/action_dispatch/http/headers.rb#L12)
|