hedahai119 2009-05-26 18:54
浏览 366
已采纳

java怎么防止跨域提交表单

如我原来的form是

文件路径是

http://192.168.1.20/bbb.jsp

怎么防止别人做一个html文件提交到我的aaa.jsp呢?如:

那么请问 我怎么在我的aaa.do里面 判断对方发送这个表单的域名呢?

主要是怎么得到?
我用request.getRemoteHost() 只得到了 对方的IP

求一方法得到对方提交表单时的域名。

谢谢 急用啊
[b]问题补充:[/b]
谢谢 我是用struts2做的程序

不过token好像能防重复提交form

但是还是不能防止 别人跨域提交啊

我写form用了token 别人模拟的时候也能用啊
[b]问题补充:[/b]
我token 用的确实不太明白

摆脱那个大哥 给个 例子

form 怎么写

action中怎么写

config要配什么啊

在网上找了半天 都写的很模糊

  • 写回答

15条回答 默认 最新

  • iteye_4277 2009-05-27 13:20
    关注

    public static boolean validate(HttpServletRequest request){
    String Referer="";
    boolean referer_sign=true; //true 站内提交,验证通过 //false 站外提交,验证失败
    Enumeration headerValues = request.getHeaders("Referer");
    while (headerValues.hasMoreElements())
    Referer =(String)headerValues.nextElement();
    //判断是否存在请求页面
    if(Referer==null || Referer.length() referer_sign=false;
    else
    {
    //判断请求页面和getRequestURI是否相同
    String servername_str=request.getServerName();
    if(servername_str!=null || servername_str.length()>0)

    {

    int index=0;
    if (StringUtils.indexOf(Referer, "https://")==0){
    index=8;
    }
    else if (StringUtils.indexOf(Referer, "http://")==0){
    index=7;
    }
    if(Referer.length()-index<servername_str.length()) //长度不够
    referer_sign=false;
    else
    { //比较字符串(主机名称)是否相同
    String referer_str=Referer.substring(index,index+servername_str.length());
    if(!servername_str.equalsIgnoreCase(referer_str))
    referer_sign=false;
    }
    }
    else
    referer_sign=false;
    }
    return referer_sign;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(14条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝