自己网站的jsp,给别人的网站iframe嵌入调用。
我想限制只能指定的域名可以调用我的jsp,如果是别的网站域名调用,则做区别处理。
用js,top.location.hostname拿父页面的域名。但是发现跨域拿不到。
用iframe src带参数的方法,感觉没意义。因为参数公开的,别人调带参一样的src就行了。求方法啊~~~js的java的等等思路都可以

解决方案 »

  1.   

    在你的页面中加入如下脚本(尽量靠近页面上部)<%
      String ref = request.getHeader("Referer");
      if (ref!=null && !ref.contains("localhost")){
      out.print("This page could not be used by your server.");
      return;
      }
    %>你可以将"localhost"换成其他的字符串(例如你的域名)
      

  2.   

    这个方法可以,还有一个方法就是在tomcat中配置
      

  3.   

    使用 Referer 吧,但是不能直接用 contains。public static boolean isIllegalReferer(String referer) {
        if (StringUtils.isBlank(referer)) {
            return false;
        }
        try {
            URL url = new URL(referer);
            return url.getHost().contains(".test.com");
        } catch (Exception e) {
            log.error("isIllegalReferer, referer: [" + referer + "] cause exception", e);
            return false;
        }
    }
      

  4.   

    如果只是允许自己的域名访问,即采用同源策略的话,可以使用非标准的 HTTP 响应头 X-Frame-Optionsresponse 设置一下这个头,值设为:SAMEORIGIN,即:response.setHeader("X-Frame-Options", "SAMEORIGIN");X-Frame-Options 需要的最小浏览器版本:IE 8+, Firefox 3.6.9+, Opera 10.5+, Safari 4.0+, Chrome 4.1.249.1042+更多的方法可以 Google 以下关键词“frame busting”
      

  5.   

    return url.getHost().contains(".test.com");改为:return url.getHost().toLowerCase().lastIndexOf(".test.com") > 0;