SoftBankのユーザーIDをSSLページで取得するには?
SoftBankでも他のキャリアと同様にユーザーID(携帯契約者の識別子)を取得することができる。SoftBankの場合は、HTTPヘッダx-jphone-uidからユーザーIDが取得できるようになっている。会員制サイトでよく見かける「かんたんログイン」といった機能は、このユーザーIDを利用していることが多く、利用価値が高い。
ところがこのユーザーID、サーバー側から取得できないときがあるのだ。それはSSLページ。SSLページでユーザーIDを取得できないとなると、ログインページや会員登録ページなど、重要なページでユーザーIDが使用できないことになってしまう・・・。
今回はSoftBankのSSL環境下におけるユーザーID取得の問題をテーマにしたい。
SoftBankのユーザーIDが取得できない3つのケース
SoftBankのユーザーIDが取得できないケースは、冒頭で述べたSSLだけではない。実際には3つのパターンが存在するので、まずは条件を整理したい。
1つ目はC型端末。「C型端末では非公式サイトの場合にユーザーIDは取得できない」というSoftBankの制限によるものだ。これは制限事項だが、C型端末が低スペックでかつ利用者が極めて少ないために非対応機種として扱うサイトも多く、問題にならないケースも多いだろう。
2つ目は携帯ユーザーが「ユーザーIDを送信しない」と設定した場合。これは利用者の意図だし、取得できないのは当然だ。
そして、3つ目が特定の条件下でアクセスしたSSLページ。全てのSSLページではないが、運悪くその条件にハマってしまったら、どの機種からもユーザーIDは取得できない。
SSLでユーザーIDが取得できない条件は・・・
SSLでユーザーIDが取得できない条件はちょっと複雑だ。文章にすると、次のいずれかの条件になる。
- URLの直接入力で https:// から始まるURLにアクセスした場合のSSLページ
- メール本文のURLクリックで https:// から始まるURLにアクセスした場合のSSLページ
- 上記1もしくは2でアクセスしたSSLページ内に存在するリンクをクリックして遷移した場合のSSLページのうち、非SSLページを経由せずに到達した場合
ちょっと分かりにくいので、具体例で説明したい。
(A)httpページから順にアクセスした場合
最初にhttpページへアクセスし、途中でhttpsページを挟むような場合はすべてのページでユーザーIDを取得できる。
(B)httpsページから順にアクセスした場合
一方、最初にhttpsページにアクセスした場合は、ユーザーIDが取得できない。ただし、途中にhttpページを挟むようにすると、それ以後のページではhttpページでもhttpsページでもユーザーIDが取得できる。
最初にアクセスするページがHTTPならOK!
長々と書いたが、つまりこういうことになる。
「最初にアクセスするページさえHTTPになっていれば、必ずSoftBankのユーザーIDが取得できる」
WebサイトのURLを紙媒体とかメールとかで通知する際、http:// から始まるURLを記載する。メルマガや空メールなどシステムから送信するメールのURLにも、http:// から始まるURLを記載する。このようにhttpに統一さえしておけばOKだ。
とはいいつつ、最初にアクセスするページをどうしてもSSLにする必要がある場合は、一旦httpページを経由させる。例えばhttpページにリダイレクトさせてから、再びSSLページにリダイレクトさせる方法とかがある。
それにしても不思議なのは、なぜhttpsページからアクセスを始めた場合だけ、ユーザーIDが取得できないのか?このからくりについては次回の話題としたい。