2017-06-30 2 views
0

Ich versuche, eine HTTP-Anfrage (GET) umleiten, mit Crossbar Umleitung Service. Ich verwende 'curl' für die Anfrage. Die Umleitung scheint gut zu funktionieren, aber ich kann meine (Abfrage-) Parameter nicht an das endgültige Ziel übergeben. Speziell mache ich:Wie kann ich den Web Redirection Service von Crossbar nutzen?

curl -L "http://localhost:8008/redirection?num=15" 

wo bei localhost: 8008 läuft der Crossbar-Router. Der Pfad '/ Umleitung' wird bei der Konfigurationsdatei von Crossbar definiert:

"redirection":{ 
    "type": "redirect", 
    "url": "http://somewhere.com/something" 
}, 

Die Antwort vom Server (z http://somewhere.com/something) ist:

{ 
"detail": "Missing query parameter 'num'", 
"status": 400, 
"title": "Bad Request", 
"type": "about:blank" 
} 

Was mache ich falsch?

Antwort

0

Ich fand eine Lösung. Ich bin mir nicht sicher, ob das der richtige Weg ist, aber es funktioniert. Ich habe einige Codezeilen in der Datei http.py hinzugefügt, die sich im folgenden Pfad befindet: /usr/local/lib/python3.4/dist-packages/twisted/web. Insbesondere änderte ich die Funktion Umleitung der Klasse anfordern, wie unten dargestellt:

def redirect(self, url): 
    """ 
    Utility function that does a redirect. 

    The request should have finish() called after this. 
    """ 
    ########## my code ########## 
    x = self.uri.split(b'?', 1) #split 
    if len(x) == 1:   
     self.path = self.uri   #there are no parameters 
    else: 
     self.path, argstring = x  #argstring = my query parameters 
     params = '?' + argstring.decode() 
     url += params.encode()  #convert string parameters to bytes and append them to url 
    ################################ 

    self.setResponseCode(FOUND) 
    self.setHeader(b"location", url) 

So, jetzt, „Standort“ hat die neue URL + meine Abfrageparameter und Redirection Service (Crossbar) meine Parameter ist vorbei zum neuen Ziel, richtig.

Wenn es eine bessere Lösung gibt (vielleicht, wenn ich etwas in Crossbar und nicht in verdreht ändern könnte), lass es mich wissen!

Verwandte Themen