Excelからリンクするとログアウトしてしまう原因と対策
WordやExcelからのリンクを踏むと、なぜかログイン画面に飛ばされる。そんな経験はありませんか?Microsoftの公式のトラブルシューティング記事もありますが、なんだかよくわかりません。learningBOXでも、以前はこの現象が発生していたのですが、バージョン2.8.9にて解決しました。learningBOX以外のシステムでも、同様のお問い合わせに悩まれている場合があるかと思い、その原因と対策を公開させていただきます。
目次はこちら
1. 症状
2. 原因
2. 対策
3. そもそも何で発覚したの?
4. 世の中のWebアプリは対処できてるの?
症状
あるシステムにログインした状態で、WordやExcelから、システム内のURLを開くとログイン画面に遷移してしまう。
※ログイン済であるので、システム内のURLを直接開いてもらいたい。
原因
WordやExcelにおいて、リンクをクリックした場合、WordやExcelがそのリンクアドレスに対してリクエストを送信する。WordやExcelでは、リンク先のサイトにログインしていないので、ログインページに対してリダイレクトするようなレスポンスを受け取る。このリダイレクト先のURLがウェブブラウザに渡されることで、ログインページへの遷移が発生してしまいます。
対策
WordやExcelからログイン後のページに対するリクエストを受け取った場合は、リダイレクト処理を行わない。こうすることで、指定したURLがそのままウェブブラウザに渡され、ログイン後のページを開くことができる。上の図でいうと②のところの処理を変更すればよいです。
PHPであれば以下のようなコードで対処できます。exitしてしまうと副作用がでる可能性があるので、ご利用のフレームワークの流儀に沿ったやりかたで処理を打ち切ってください。ステータスコード200で空のドキュメントを返せばだいたいOKだと思います。
そもそも何で発覚したの?
弊社のお客様に、教材のURLをExcelで配布されている方がいらっしゃいまして、その方から、リンクを踏むとなぜかログイン画面に飛ばされる。ログインしている状態なので、教材を直接開きたいとのご意見を頂きました。Excelから開いた場合だけ特別な例外処理をしているわけではないので、Webサーバのログなどを参考に原因を調査した結果、Officeの変な挙動が原因であると判明しました。
世の中のWebアプリは対処できてるの?
2020年1月14日現在、GmailとSlackは対処されていましたが誰もが知っているようなサービスでも対処されていないものは多数あります。これはWebアプリケーション側がダメというよりは、Officeの挙動がダメなのですが、上記の方法で容易に対処できますので、ぜひ対応を検討ください。