• 締切済み

JavaScript 特定IP以外を転送

JavaScriptで特定のIP(会社の固定IP)以外からのアクセスは自社トップページへ転送する事は出来ませんでしょうか? ◎理由 商品ページの作成中で、社内各部署のチェックが完了してません。 が、商品の作成上の都合で、過去の同類商品をURLを直接入力するとアクセス出来てしまい購入が出来てしまいます。 カート会社に相談しましたが、特定の商品を止める事が出来ないようですので、JavaScriptで出来ないかと考えております。 出来ない理由は、在庫が他の商品と紐付いているため、出来ないとの事です。 単純なページ転送は問題なく出来ましたが、これでは社内のチェックが出来ないため、会社のIPからはアクセスを許可したいと考えております。 上記2点の事から、表題の特定IP以外のホストからのアクセスを転送出来ればと考えており、ご存じの方がいらっしゃいましたら、お教え頂けましたら幸いです。

みんなの回答

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.3

> 具体的には、ブラウザにどのような設定をすれば宜しいのでしょうか? cookie マネージャーが標準装備されているブラウザを使う、以外の方法を 思いつく限りで幾つか挙げます ページ内でなんとかする * ドメイン内に専用ページを用意して、表示させれば自動的に設定するスクリプトを埋め込む * 商品ページ内のどこかをクリックするとスクリプトが... 環境でなんとかする * 専用のリバースプロキシサーバーを立ち上げる * デバッグ用プロキシ(例:Fiddler)を使う ブラウザでなんとかする * 「主要ブラウザでCookieを編集する方法」で検索 * 以下のURLを bookmarklet として登録し、ドメイン内の適当なページにて実行 (オススメ!) javascript:(function(x){x.document.cookie="name=value"})(window)

sujinosuke00
質問者

お礼

Ogre7077様 回答頂きありがとう御座います。 お教え頂いた方法で、自分なりに調べてみます。 重ね重ねアドバイス頂きありがとうございました。

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.2

WebRTCAPIを利用することによりJSからIPアドレスを取得できます。 例えばChromeではこうします。 new Promise(function (res) {  var rtc = new webkitRTCPeerConnection({iceServers: []});  rtc.onicecandidate = function (evt) {   evt.candidate && res(evt.candidate.candidate.split(' ')[4])  };  rtc.createOffer(function (desc) { rtc.setLocalDescription(desc) }); }).then(alert); ただし企業からのアクセスだとプライベートIPの表示になってしまうかもしれないので、さらなる工夫がいるかもしれません。 まあ、サーバサイドで制限するのが普通だと思います。

sujinosuke00
質問者

お礼

b0a0a様 回答ありがとうございます。 WebRTCAPIで検索かけましたが、英語のページばかりで私にはハードルが高そうです。 ありがとうございました。

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

サーバー側ならともかく、クライアント側では安全上の理由から、通常はIPアドレスを取れません。 回避策として * 商品ページ内にCGIなどでIPアドレスを埋め込む * AJAX でサーバー側から問い合わせる * ActiveX あたりでごにょごにょ などがありますが、いろいろ大変です。 今回の用途ならば、IPアドレスの代替案として cookie を活用しては如何でしょうか。 ある特定の値(例: regacypage=noskip)を持っている場合のみ転送しない、等です。 ただこの案では cookie の設定手順を周知する手間が発生するのが難点となります。

sujinosuke00
質問者

お礼

Ogre7077様 回答ありがとうございます。 なるほど、JSはクライアント側での動作なので、単純に出来ないのですね。。。 記載頂いている、Cookieですがチェックする人間は社内でも数名程度なので、問題ありません。 具体的には、ブラウザにどのような設定をすれば宜しいのでしょうか? Cookie設定で検索してみましたが、受け入れる側の設定しか見つける事が出来ませんでした。 初歩的な質問で申し訳ありませんが、お教え頂けたら幸いです。