Anzeigen oder Abrufen der HTTP-Header-Attribute in Rails 4

9
___ qstnhdr ___ Anzeigen oder Abrufen der HTTP-Header-Attribute in Rails 4 ___ answer38206436 ___

Sie können den Hash der tatsächlichen HTTP-Header mit request.headers im Controller sehen.

    
___ tag123rubyonrails ___ Ruby on Rails ist ein Open-Source-Full-Stack-Webanwendungsframework, das in Ruby geschrieben wurde. Es folgt dem populären MVC-Framework-Modell und ist bekannt für seinen "convention over configuration" -Ansatz für die Anwendungsentwicklung. ___ tag123ruby ___ Ruby ist eine multi-plattform Open-Source, dynamische objektorientierte interpretierte Sprache, erstellt von Yukihiro Matsumoto (Matz) im Jahr 1995. Die [Ruby] -Tag ist für Fragen im Zusammenhang mit der Ruby-Sprache, einschließlich seiner Syntax und seiner Bibliotheken . Fragen speziell zum Ruby-on-Rails-Framework sollten mit [ruby-on-rails], nicht [ruby] getaggt werden. Verwenden Sie dies nicht, um Ruby in der japanischen Sprache zu markieren. ___ tag123railsapi ___ Rails für API-Only-Anwendungen (> 3.2) ___ answer32405432 ___

%code% gibt keinen Hash zurück, sondern eine Instanz von %code% , die ein Wrapper um das Rack env ist.

%code% implementiert viele Methoden wie %code% und %code% , wodurch es sich wie ein Hash verhält, aber es überschreibt nicht den Standard %code% . Daher können Sie die Schlüssel / Wert-Paare nicht einfach sehen %code% oder %code% it.

Sie können jedoch die Anforderungsheader im Rack env sehen:

%Vor%

Denken Sie daran, dass die Anforderungsheader im Rack env die %code% d, %code% d und %code% vorfixierte Version der ursprünglichen HTTP-Request-Header sind.

AKTUALISIEREN

Tatsächlich gibt es eine endliche Menge von Anforderungsheadern, denen kein Präfix %code% vorangestellt ist. Diese (großgeschriebenen und unterstrichenen) Header-Namen werden in %code% gespeichert. Ich liste sie unten auf:

%Vor%

Also wäre die Vollversion der Header der Auflistungsanfrage

%Vor%     
___ answer32412298 ___

Dieser Code löste meine Frage %code% . Der Trick war, dass ich den Namen meines Headers mit %code%

voranstellen musste     
___ answer40247751 ___

Ich habe in Rails 5 bemerkt, dass sie jetzt erwarten, dass Header in der Anfrage wie folgt geschrieben werden:

%code%

Bevor sie umgewandelt werden in:

%code%

In Schienen. Doing %code% wird nicht mehr funktionieren.

    
___
delpha 04.09.2015, 19:19
quelle

4 Antworten

5

Dieser Code löste meine Frage request.env["HTTP_MY_HEADER"] . Der Trick war, dass ich den Namen meines Headers mit HTTP

voranstellen musste     
delpha 05.09.2015, 11:01
quelle
25

request.headers gibt keinen Hash zurück, sondern eine Instanz von ActionDispatch::Http::Headers , die ein Wrapper um das Rack env ist.

ActionDispatch::Http::Headers implementiert viele Methoden wie [] und []= , wodurch es sich wie ein Hash verhält, aber es überschreibt nicht den Standard inspect . Daher können Sie die Schlüssel / Wert-Paare nicht einfach sehen p oder pp it.

Sie können jedoch die Anforderungsheader im Rack env sehen:

%Vor%

Denken Sie daran, dass die Anforderungsheader im Rack env die upcase d, underscore d und HTTP_ vorfixierte Version der ursprünglichen HTTP-Request-Header sind.

AKTUALISIEREN

Tatsächlich gibt es eine endliche Menge von Anforderungsheadern, denen kein Präfix HTTP_ vorangestellt ist. Diese (großgeschriebenen und unterstrichenen) Header-Namen werden in ActionDispatch::Http::Headers::CGI_VARIABLES gespeichert. Ich liste sie unten auf:

%Vor%

Also wäre die Vollversion der Header der Auflistungsanfrage

%Vor%     
Aetherus 04.09.2015 19:40
quelle
3

Ich habe in Rails 5 bemerkt, dass sie jetzt erwarten, dass Header in der Anfrage wie folgt geschrieben werden:

Access-Token

Bevor sie umgewandelt werden in:

HTTP_ACCESS_TOKEN

In Schienen. Doing ACCESS_TOKEN wird nicht mehr funktionieren.

    
zachaysan 25.10.2016 19:03
quelle
-1

Sie können den Hash der tatsächlichen HTTP-Header mit @_headers im Controller sehen.

    
BitOfUniverse 05.07.2016 14:46
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ answer31646649 ___

statt dessen:

%Vor%

füge folgendes hinzu:

%Vor%

Es hat bei mir funktioniert !!!

    
___ answer29762495 ___

Ich habe die Antwort auf meine Frage herausgefunden.

Wenn jemand anderes auf dasselbe Problem stößt, aktivieren Sie "Places API für Android" und nicht nur "Places API" im Entwicklerkonsole . "Places API für Android" wird unter "APIs & amp; Auth / APIs" nicht angezeigt, da es (noch) keine populäre API ist. Sie müssen mit dem API-Suchfeld danach suchen.

    
___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ tag123googleplacesapi ___ Die Google Places-API ist ein Dienst, der Informationen zu Orten zurückgibt, die in dieser API als Standorte, geografische Standorte oder wichtige Sonderziele definiert sind. Ortsanfragen spezifizieren Standorte als Breiten- / Längenkoordinaten. Die Google Places-API ist als Webservice (HTTP-Anfragen), JS-Bibliothek für Google Maps API v3, Android-API (in Google Play-Diensten) und iOS-Bibliothek (Teil des Google Maps für iOS SDK) verfügbar. ___ answer35638702 ___

Überprüfen Sie Ihre Build-Variante.

Wenn Sie von %code% auf %code% zurückgeschaltet haben, erhalten Sie normalerweise auch den Ergebniscode %code% .

Zurück zu %code% hat den Trick für mich gemacht.

    
___ qstntxt ___

Ich kann die Ortsauswahl in meiner App nicht verwenden. Die API funktionierte dann nur einen Tag ohne Erklärung. Der Picker erscheint für eine sehr kurze Zeit und schließt dann ohne Ausnahme und nichts in den Protokollen. Die Funktion onActivityResult wird mit requestCode = 1, resultCode = 2 (Fehlercode) und ohne Daten aufgerufen. Der Beispielcode von Google macht das Gleiche. Ich habe alles versucht, damit das funktioniert. Irgendjemand Ähnliches erfahren? Hilfe bitte.

AndroidManifest.xml

%Vor%

Aktivität.java

%Vor%     
___