如何在javascript中限制直接url文件名?

时间:2017-01-27 12:02:56

标签: javascript jquery html

我需要在javascript中限制直接的URL文件名!当我输入HTML文件的直接URL时,它不应该允许在里面显示内容。它应该向用户发出警告。它只有在我们点击索引文件链接时才能工作。

文件是1.index.html           2.viewer.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>

2 个答案:

答案 0 :(得分:1)

实现这一目标的一种方法是使用&#34; document.referrer&#34;属性。

如果是您的入口点,则document.referrer将设置为&#34;&#34;。

如果您链接到子页面,那么您的文档引荐来源将设置为您的host / entry.html

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

不如服务器端,但有些东西。

答案 1 :(得分:0)

测试1.html:

... location /billing/ { ... root /var/virtual/a-laravel-app/public; # this replaces the rewrite # rewrite will alter the url in nginx and a new lookup will be made # the entry point for Laravel is the public/index.php file try_files /index.php =404; .... } ...

<强> test2.html:

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

这也允许您指定主机名,而不仅仅是文件名。 (让协议关闭以使其与协议无关)

免责声明:对于REAL安全性,此锁定应在服务器端完成。