DjangoWebサービスでAmazonがS3で行うことを模倣する認証スキームを実装しました。各リクエストはシークレットを使用して署名されます。署名する文字列には、特にアクセスされているリソースのURLが含まれます。
たとえば、クライアントがhttp://myservices.org/usersstring_to_sign
に対してGETリクエストを発行する場合、クライアントはを含むを構築する必要がありますhttp://myservices.org/users
。string_to_sign
サーバーがリクエストを処理するとき、サーバーはWSGIラッパーリクエストオブジェクトから学習した情報に基づいて、を構築し、同じURLを含めることができます。
私の問題は、クライアントがポート番号(たとえば)を含めることを決定した場合、クライアントによって使用された実際のURLを取得する方法がわからないためhttp://myservices.org:80/users
、サーバーコードが正しくないものを構築することです。string_to_sign
WSGIラッパーは、URLにポート番号が含まれていることを通知しません。
DjangoアプリケーションがHTTPリクエストの一部であった実際のURLを学習する方法はありますか?生のHTTPリクエストにアクセスしてURLを自分で引き出すために、WSGIラッパーの前にあるある種のリクエストハンドラーを設定する必要がありますか?