ページへの遷移時にリファラを確認して、
決められたドメイン以外からの遷移の場合はページ遷移させたいという要望があります。
対象のページはReactを利用していますので
componentDidMount
に下記のような処理を記述しました。
JavaScript
1 componentDidMount() { 2 const referrer = document.referrer; 3 let isAllow = false; 4 //ACCESS_ALLOW_DOMAIN_LISTには許可するドメインの配列を定義している 5 for (let domain of ACCESS_ALLOW_DOMAIN_LIST) { 6 if (referrer.indexOf(domain) != -1) { 7 isAllow = true; 8 break; 9 } 10 } 11 if (!isAllow) { 12 //指定のドメイン以外からの遷移の場合は、強制的にリダイレクト 13 location.href = 'http://hoge.com/top.html'; 14 }
ところが、上記の記述だとページ表示時時に一瞬だけ本来のページが見えてしまい
その後に'http://hoge.com/top.html'に遷移するようになってしまいました。
componentDidMount
はrender
の後に呼ばれるため、このような現象になると考え
ならばとcomponentWillMount
に上記の処理を記述したところ今度は
document is not defined
のエラーが出てしまいました。
Reactはrender
で仮想DOMを作成するので、
DOMが出来ていない状態だとdocument.referrer
は使えないのだろうと考えましたが
ここで手詰まりになってしまいました…。
こういった処理は本来サーバ側で実装するべきだと思いますが、今回は諸事情によりクライアント側のみで対応する必要があります。
もし何かアドバイス等ありましたらご教示いただけますと幸いです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー