私は 2 つのサーバー システムを持っています... 1 つはアプリをホストし、もう 1 つは認証/承認をホストしています。アプリは、ユーザーがまだログインしていないことを検出すると、認証サーバーにリダイレクトし、パラメーターとして、ユーザーによって最初に要求された URL を渡します。これにより、認証後、ユーザーはアプリケーション サーバーにリダイレクトされます。最初に要求された正確な URL。
ただし、元の URL に # が含まれている場合は、ルーチン全体がホース処理されます。ブラウザが url エンコードされたパラメータをデコードしているように見えます。その結果、# の後に何かがドロップされます。Chrome、Safari、Firefoxでこれを試しました。
例:
元の URL:
https://xxx.com/#/main/by-users?param1=53¶m2=13¶m3=39
リダイレクト URL:
https://yyy.com/signin/?returnURL=https%3A%2F%2Fxxx.com%3A80%2F%23%2Fmain%2Fby-users%3Fparam1%3D53%26param2%3D13%26param3%3D39
ブラウザの表示:
https://yyy.com/signin/?returnURL=https%3A%2F%2Fxxx.com%2F#/main/by-users?param1=53¶m2=13¶m3=39
ご覧のとおり、# を含む以降はすべてデコードされています。したがって、サーバーは完全な「returnURL」パラメーター値を取得することはありません。それは基本的にただ得ます
https://xxx.com/
これはどこかの仕様の一部であるに違いありませんが、エンコードされた # をデコードして、最初からエンコードされていないかのように処理するのは正気ではないようです。しかし、どうすればこれを回避できますか?
ありがとう。