Ich bin mir nicht sicher, ob dies möglich ist oder Sinn ergibt, aber ich versuche eine Umleitung zu machen, nachdem ich ein HTTP-Header-Feld gesetzt habe. Etwas wie:
%Vor% Offensichtlich funktioniert das nicht, da request
die aktuelle Anfrage ist, nicht die Weiterleitung. Gibt es eine Möglichkeit, redirect_to
mit benutzerdefinierten HTTP-Headern aufzurufen?
Verwenden Sie das Antwortobjekt ...
Wenn Sie benutzerdefinierte Header für eine Antwort festlegen möchten, dann response.headers ist der Ort, um es zu tun. Das Header-Attribut ist ein Hash, der mappt Header-Namen auf ihre Werte, und Rails wird einige von ihnen festlegen automatisch. Wenn Sie eine Kopfzeile hinzufügen oder ändern möchten, weisen Sie sie einfach zu zu response.headers auf diese Weise:
response.headers["Content-Type"] = "application/pdf"
Es ist unmöglich , auf eine Seite mit benutzerdefinierten Kopfzeilen umzuleiten, unabhängig davon, welche Sprache oder welches Framework Sie verwenden. Mit anderen Worten, es gibt keine Möglichkeit, eine HTTP-Weiterleitung auszulösen und den Client (Browser) dazu zu veranlassen, einen benutzerdefinierten Header hinzuzufügen.
Wie Sie selbst erwähnt haben, legen Sie die benutzerdefinierten Header für die Antwort fest, die den Browser anweist, umzuleiten, nicht für die Weiterleitung selbst.
Die einzige Möglichkeit für eine Website, einen Browser anzuweisen, eine HTTP-Anfrage mit einem benutzerdefinierten Header zu erstellen, besteht darin, Javascript und das XMLHttpRequest
-Objekt zu verwenden.
Sie können es nicht direkt machen, aber es gibt einen indirekten Weg, es zu tun
redirect_to your_url, flash: {accept_header: 'application / json'}
und überprüfen Sie dann flash [: accept_header] in der Ziel-URL.
Das ist nicht besonders elegant, aber es funktioniert. Es ist analog zu einem speziellen URL-Parameter - your_url (accept_header: json) - aber es wird nicht vom Benutzer / bookmarked / etc.
gesehen werdenTags und Links ruby ruby-on-rails redirect