【问题标题】:struts2 invalid.token returned when form submitted using JQuery使用 JQuery 提交表单时返回 struts2 invalid.token
【发布时间】:2011-03-04 03:20:15
【问题描述】:

我继承了一些代码,现在我必须在其中添加 CSRF 预防,并尝试使用 struts2 tokenSession 拦截器来执行此操作。我正在使用 struts2 令牌标记向我的表单添加一个令牌,如下所示:

<form id="updateObject" name="updateObject" action="<%=request.getContextPath()%>/prv/updateObject.action" method="POST">
    <fieldset class="x-fieldset">
        <legend>Update object - Action Required</legend>
        <div>...</div>
        <s:token />
        <s:hidden name="id" id="objectId" />
            more stuff here...
        <input type="submit" value="Update Object" onclick="javascript:return doUpdateObject('myAction');"/>
    </fieldset>
</form>

在我的 javascript 函数中,我正在添加/删除一些验证规则(取决于所需的操作,并提交表单:

function doUpdateObject(action){
    actionPanel.registerAction(action); // this function places the action name in an in-scope variable
    doUpdateObjectValidationSetup(action); // this function adds/removes jquery validation rules depending upon the action

    if($("#updateObject").valid()){
        $("form#updateObject").submit();
    }
    return false;
}

我已经拦截了请求并且正在添加一个令牌,但是 struts2 tokenSession 拦截器正在返回 invalid.token。没有此拦截器,代码按预期工作。 (未发布 struts2 xml 文件 - 如果需要,将发布相关部分)。我还在其他使用基本 html 提交按钮(即不通过 javascript 或 jquery)的页面中使用了 tokenSession 拦截器,这也可以按预期工作。是什么导致令牌无效?

注意我继承的项目使用了标准 html、struts2 标签、ExtJS 和 JQuery 的奇怪混合。我会在某个时候清理它,但目前我只需要让 tokenSession 拦截器按原样在代码中尽快工作(因为我必须对数百页应用类似的修复......)。

非常感谢任何帮助/指针/提示/等!

问候,

约翰

【问题讨论】:

    标签: jquery struts2 token csrf


    【解决方案1】:

    你确定你没有生成两个提交吗? (查看您的网络服务器日志)

    如果是这样,也许是因为:

    onclick="javascript:return doUpdateObject('myAction');"

    这是不正确的,伪协议javascript: 应该只用于 url (ej href="...") 而不是事件处理程序。将其替换为onclick="return doUpdateObject('myAction')"

    不过,我怀疑问题是由这个引起的。

    【讨论】:

    • 谢谢,但是不,没有生成两个提交 - 正如我所说,我已经拦截了检查参数的请求,并且只发送了一个请求。不过,我已经删除了“javascript:”。
    【解决方案2】:

    现在可以正常使用,没有任何变化!只是做了一个完整的重建,缓存清理,重新启动等。不知道是什么导致了原始问题。很抱歉浪费了时间。

    约翰

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 2013-10-20
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      相关资源
      最近更新 更多