当前位置:编程学习 > JAVA >>

求方法。自己域名的jsp,想只允许被指定的域名iframe使用。

自己网站的jsp,给别人的网站iframe嵌入调用。
我想限制只能指定的域名可以调用我的jsp,如果是别的网站域名调用,则做区别处理。


用js,top.location.hostname拿父页面的域名。但是发现跨域拿不到。
用iframe src带参数的方法,感觉没意义。因为参数公开的,别人调带参一样的src就行了。

求方法啊~~~js的java的等等思路都可以 --------------------编程问答-------------------- --------------------编程问答-------------------- 在你的页面中加入如下脚本(尽量靠近页面上部)

<%
  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 楼 magong 的回复:
在你的页面中加入如下脚本(尽量靠近页面上部)
HTML code

<%
  String ref = request.getHeader("Referer");
  if (ref!=null && !ref.contains("localhost")){
      out.print("This page could not be used by your server……

这个方法可以,还有一个方法就是在tomcat中配置 --------------------编程问答-------------------- 建议配置成过滤器
引用 2 楼 magong 的回复:
在你的页面中加入如下脚本(尽量靠近页面上部)

HTML code


<%
  String ref = request.getHeader("Referer");
  if (ref!=null && !ref.contains("localhost")){
      out.print("This page could not be used by your……
--------------------编程问答-------------------- 使用 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;
    }
}
--------------------编程问答-------------------- 如果只是允许自己的域名访问,即采用同源策略的话,可以使用非标准的 HTTP 响应头 X-Frame-Options

response 设置一下这个头,值设为: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” --------------------编程问答-------------------- return url.getHost().contains(".test.com");

改为:

return url.getHost().toLowerCase().lastIndexOf(".test.com") > 0; --------------------编程问答--------------------
引用 7 楼 bao110908 的回复:
return url.getHost().contains(".test.com");

改为:

return url.getHost().toLowerCase().lastIndexOf(".test.com") > 0;

学习了!!! --------------------编程问答-------------------- 学习了!以后用的着的。 --------------------编程问答--------------------
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,