JQuery 从超链接调用函数

JQuery call function from hyperlink

在 JSP / JQUERY 中,我在列表视图中创建超链接的动态列表。我不想将敏感信息作为 GET 参数传递回服务器,而是希望单击超链接调用一个函数,我可以在其中传递参数,然后执行 POST。

这是生成列表的相关代码部分:

        <!-- Page -->
    <div data-role="page" data-add-back-btn="false">

        <!-- Content -->
        <div data-role="content" data-theme="c">
            <ul data-role="listview" data-inset="true" data-filter="true" data-autodividers="false">
                <%
                    for (int i=0; i<srVector.size(); i++) {
                        sr = (SR)srVector.get(i);
                %>
                    <li>
                        <a href="/myServlet?cmd=getDetails&srId=<%=sr.SR_ID%>&empCode=<%=empCode%>"><h3><%=sr.ACCT_NAME%></h3></a>
                    </li>
                <%
                    } 
                %>
            </ul>
        </div> <!-- End Content -->

非常感谢任何帮助。

你可以这样做:

您的主播:

// you can use whatever selector you like
// this example use [data-post-link] attribute
<a href="url/to/send/to" data-post-link="send-form" data-id="<%=sr.SR_ID%>">send me</a>

绑定jquery回调到主播:

// you can use whatever selector you like
$('[data-post-link]').on('click', function() {
  send(this);
});

这是发送函数:

var send = function(element) {
  var value = {
    // you can put any data you want
    'id': $(element).attr('data-id')
  };

  $.ajax({
    type: "POST",
    url: $(element).attr('href'),
    data: value // value object created above
  });
};

但是,无论如何,您的敏感数据都会暴露,因为这样您必须将其打印在您的标记中,任何人都可以看到。

即使没有,别人也可以在你的 js 回调函数体中看到它。

有两种选择:

  • 这些数据真的不敏感(是吗?有人可以使用这些数据破解您的应用程序吗?偷东西?无意中使用它?)

  • 如果答案是 "yes",那么您应该验证数据是否来自您 "really"。只是不要自己实施。您选择的框架肯定内置了 CSRF 保护机制。这是 link 在 spring 框架中关于它的文档:Spring framework CSRF

你没有说你用的是什么框架,但是应该很容易google任何框架。

另外 here 是纯 JSP servlet 的 CSRF 保护过滤器 - OWASP CSRFGuard 项目。 (安装和配置在网站底部。)