Qual è e perché c'è una differenza tra request.env ['content_type'] e request.content_type?
-
27-10-2019 - |
Domanda
Vedo due valori diversi per request.env['CONTENT_TYPE']
e request.content_type
.
Da una domanda separata, sto inviando una richiesta alla mia domanda di Rails e ho impostato esplicitamente il Content-Type
a text/xml
.
Ecco cosa sto vedendo dall'altra parte, dall'interno della mia domanda di rotaie:
request.env['CONTENT_TYPE'] = "text/xml"
request.content_type = "application/xml"
request.content_type
è effettivamente action_dispatch.request.content_type
- Qual è la differenza tra
request.env['CONTENT_TYPE']
erequest.content_type
? - Perché questi due valori sono diversi?
Soluzione
request.env
Contiene i "pensieri" di Rack su quale sia il tipo di contenuto. In generale, questo è il tipo di contenuto della richiesta che hai fatto.
request.content_type
D'altra parte è l'interpretazione di Rails di ciò che pensa sia il tipo di contenuto, in base al formato della richiesta. Questi sono definiti in un file chiamato mime_types.rb
nelle rotaie (non ricordo quale parte, ma con ciò dovresti essere in grado di individuarla) e possono essere specificati altri config/initializers/mime_types.rb
.