2017-06-30 6 views
0

クロスバのリダイレクトサービスを使用してHTTPリクエスト(GET)をリダイレクトしようとしています。私はリクエストに「カール」を使用しています。リダイレクトはうまくいくようですが、最終的な宛先に(クエリ)パラメータを渡すことはできません。具体的には、私はやっています:Webリダイレクションサービスのクロスバーを使用するにはどうすればよいですか?

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

ここで、localhost:8008はクロスバールーターを実行しています。パス「/リダイレクトが」クロスバーの設定ファイルで定義されています

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

サーバからの応答(例えばhttp://somewhere.com/something)である:私は間違って何をやっている

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

答えて

0

解決策が見つかりました。これが正しい方法かどうかは分かりませんが、うまくいきます。 http.pyというファイルに、/usr/local/lib/python3.4/dist-packages/twisted/webというパスにいくつかのコード行を追加しました。以下に示すように具体的に、私は、クラスリクエストの機能リダイレクトを変更:

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) 

だから、今、「場所」は、新しいURLを持っている+私のクエリパラメータとリダイレクションサービス(クロスバー)私のパラメータを渡しています新しい目的地に正しく移動します。

もっと良い解決策がある場合(多分私がクロスバーで何かを変えることができ、ねじれていない場合)、私に教えてください!

関連する問題