Ich habe ein DAV-Protokoll, das Out-of-Band-Daten im URL-Anker speichert, z. die ghi
in DELETE /abc.def#ghi
. Der Server ist eine Flask-Anwendung.
Ich kann sehen, dass die Anfrage über tcpdump
kommt, aber wenn ich mir das Anfrage-Objekt anschaue (wie zum Beispiel url () oder base_url ()), bekomme ich nur /abc.def
zurück. Die #ghi
wurde entfernt.
Gibt es eine Methode, die diese Informationen zurückgibt, oder muss ich die Anfrage von der Klasse ableiten, um das selbst zu handhaben? Wenn ja, gibt es ein Beispiel, das ich als Inspiration verwenden kann?
Ich stieß auf das gleiche Problem. Die Facebook-Authentifizierungs-API gibt das Zugriffstoken hinter einem Hash zurück, der an die Weiterleitungs-URL angehängt wurde. Auf die gleiche Weise lässt Flasks request.url alles in die URL hinter dem Hash-Zeichen fallen.
Ich benutze auch Flask, also denke ich, dass Sie meinen Brute-Force-Workaround mit Javascript's window.location.href verwenden können, um die vollständige URL zu erhalten. Dann habe ich einfach das Stück, das ich brauchte (das Zugriffstoken), extrahiert, in eine Umleitungs-URL eingefügt, wo ich das Zugriffstoken als Argument an die Empfangsansicht übergeben kann. Hier ist der Code:
%Vor%Falls es Ihnen gelingt, (d) dies in Werkzeug zu tun, interessiert mich das.
Aus Wikipedia ( Fragment Identifier ) (habe keine Zeit, es im RFC zu finden):
Der Fragmentbezeichner funktioniert anders als der Rest des URIs: Seine Verarbeitung erfolgt ausschließlich clientseitig ohne Beteiligung des Servers
Also hat Flask - oder irgendein anderes Framework - keinen Zugriff auf #ghi
.
Sie können dies tun, indem Sie flask.url_for mit dem Schlüsselwort _anchor
verwenden: