WordやExcel文書内からハイパーリンクを開くと、デフォルトのブラウザで目的のURLが起動するはずだと誰もが思うだろう。しかし、不思議なことにそうはならず、望ましくない副作用が生じ、これらのOfficeプログラムではセッションやCookieでログイン保護されたページへのリンクを開くことができなくなる。
原因は Microsoft の「User Agent: Microsoft Office Existence Discovery」という名前のモジュールで、このモジュールはバックグラウンドでリンクをプリロードし、リダイレクトを追跡します。この問題は次のように再現できます。 まず、「loggedin.php」(ログイン時のページ)と「login.php」(ログイン用のページ)という名前の 2 つのファイルを作成します。:
5bcff34c5cecc130a0ee
5bcff34c5cecc130a0ee
「loggedin.php」を直接呼び出すと、元の状態の「login.php」に直接アクセスでき、すぐにクッキー「logged_in」が設定されます。 「loggedin.php」を再度呼び出すと、「ログインしています」というメッセージが表示されます。 Word または Excel (バージョン 2007 以降) 内で「loggedin.php」にリンクすると、以前にログインしたかどうかに関係なく、常に「login.php」に直接移動します。
Office プログラムは、バックグラウンドで Internet Explorer コンポーネントを起動して、URL が存在するかどうかを確認します。リダイレクトも最後まで追跡され、リダイレクトのない最後の URL (この場合は「login.php」) が返され、標準ブラウザでアクセスされます。考えられる解決策は、最初のページでバックグラウンド呼び出しをインターセプトしてブロックすることです。:
5bcff34c5cecc130a0ee