比如有一个页面叫a.aspx,如果在其它页面用<script language="javascript" src="a.aspx"></script>方式调用,
则a.aspx 可以正常执行,但如果直接访问a.aspx,则直接结束(response.end)
这种只能被脚本调用的技术是如何实现的?

解决方案 »

  1.   

    判断
    Request.urlReferer属性是否为空,
    但不能完全保证
      

  2.   

    感谢各位参与,但这样还是不能完全保证的,因为假如有一个b.aspx,里面有一个指向a.aspx的链接,那么当点击这个链接的时候,就可以完全欺骗Request.UrlReferrer。
    如果保证只能是脚本调用,看来各位还得努力啊。
      

  3.   

    另存为非HTM 文件,脚本调用时转为HTM 文件
      

  4.   

    有一些嵌套在iframe中,并且用代码控制url陷阱(循环)的办法。如果想用这种方式“保护页面源代码”还是停手吧,这是自欺欺人的。
      

  5.   

    控制客户端的想法其实是完全违背web最基本常理的,这方面你想各种奇招都有一点自欺欺人的味道。你想,ie是不是你自己的产品?如果不是,并且像现实这样它是一个符合公共标准http协议和浏览器基本原理的产品,那么任何人都可以控制(例如用telenet直接发送http命令)甚至自己写个简单的浏览器,你想禁止源代码下载就是禁止自己的页面被人看,这个目标最终走向荒唐,最终只能回到自己开发c/s结构程序上去。
      

  6.   

    独享还分享,还请暂时不讨论这个,我们现在需要讨论的是这个问题解决的办法。
    a.aspx页面如何发现自己是被脚本调用,而不是被页面调用的呢?
    这个在技术上的确有点挑战的难度。