1

基本的には、JSONP を使用せずにクロスドメイン AJAX リクエストを処理するために、Pyramid 内に API リダイレクト ルートを構築しているだけです。

次のようにルートを追加しました。

config.add_route("api","/api/{url:.*}")

次のようにURLをキャプチャしたい:

http://domain.com/api/http://location.of/other/api

ただし、リクエストの matchdict からキャプチャされた URL サフィックスを取得すると、次のようになります。

http:/location.of/other/api

URL の処理/照合中に何らかのエスケープが行われたと思いますか? これを回避し、2 つのスラッシュで目的の URL を取得するにはどうすればよいですか?

URL を GET パラメーターとして渡しても、問題は残ります。おそらく、それは Pyramid の multidicts が動作する方法と関係があるのでしょうか?

4

1 に答える 1

4

これは、 WSGI ベースのアプリケーションの基本的制限です。URL は urldecode され、URL が WSGI アプリに渡される前にスラッシュが圧縮されます。スラッシュを保持したい場合は、それらを 2 回 urlencode する必要があります。私の知る限り、クエリ文字列を使用してこれを回避する方法はありません。

元の URL が利用可能であることを指摘しておく必要があると思いますが、そこから自分の気になる部分を解析する必要があります。にありrequest.urlます。request.path_infoアプリがマウントされている場所に関連するサブパスのみが含まれているため、Pyramid とほとんどの WSGI アプリが URL をディスパッチするために使用するものです。

于 2012-06-08T00:12:13.093 に答える