2017-01-27 12 views
0

私はjavascriptで直接URLファイル名を制限する必要があります!HTMLファイルの直接URLを入力したときに内容を表示できないはずです。ユーザーにメッセージを警告する必要があります。インデックスファイルのリンクをクリックしたときにのみ動作しなければなりません。javascriptで直接URLファイル名を制限する方法は?

ファイルが 2.viewer.html

1.index.htmlある私はviewer.htmlでの直接アクセスを制限しようとしたが、それは動作しません。ビューアページには、index.htmlページのリンクをクリックしたときのコンテンツが表示されます。これを達成するための

Viewer.htmlコード

<iframe src="https://docs.google.com/viewerng/viewer?url=http:files/tutorial.pdf&chrome=true" style="width:100%; height:100%;" frameborder="0"></iframe> 
<script type="text/javascript"> 

var accepted_domains=new Array("viewer.html","viewer.html") 

var domaincheck=document.location.href //retrieve the current URL of user browser 
var accepted_ok=false //set acess to false by default 

if (domaincheck.indexOf("http")!=-1){ //if this is a http request 
    for (r=0;r<accepted_domains.length;r++){ 
     if (domaincheck.indexOf(accepted_domains[r])!=-1){ //if a match is found 
      accepted_ok=true //set access to true, and break out of loop 
      break 
     } 
    } 
} 
else 
    accepted_ok=true 

if (!accepted_ok){ 
    alert("You\'re not allowed to directly link to this file on our server!") 
    history.back(-1) 
} 
</script> 
+1

これは「ホットリンク防止」と呼ばれ、通常はサーバー側で実行されます。 .htaccessファイル(Apacheの場合)、Googleなどで行う方法については、 'htaccessはhotlinkingを防ぐ' –

+0

サーバサイドからはなく、HTMLとJavaScriptを使用してローカルで行うかどうかは、可能かどうかは –

+0

私はあなたのコードで何をしようとしているのか確かめていません。訪問者が 'index.html'から来た場合にのみ' viewer.html'に物事を表示したいですか? –

答えて

1

一つの方法は、 "document.referrer" プロパティを使用することです。

エントリポイントの場合は、document.referrerが ""に設定されます。

あなたは子ページにリンクする場合は、ドキュメントの参照元は、ホスト/ entry.html

http://www.w3schools.com/jsref/prop_doc_referrer.asp

ないサーバー側が、何か良いとしてに設定されます。

0

テスト1.html:

<a href="test2.html">Test 2</a>

test2.html:

<script> 
    if (document.referrer.indexOf('localhost:81/test1.html') == -1) window.location = 'test1.html' 
</script> 

また、これは、ホスト名だけではなく、ファイル名を指定することができます。 (プロトコルに依存しないようにプロトコルをオフにしておいてください)

免責事項:このセキュリティ保護はサーバー側で行う必要があります。

関連する問題