如何解决我可以使用Ajax.Responder向PrototypeJS Ajax请求添加参数吗?
| 我试图通过将会话令牌(服务器将通过浏览器cookie匹配)作为参数附加到我的Web应用程序发出的每个AJAX请求中,来保护AJAX调用的安全。 我想避免在每个“ 0”请求中都必须将令牌指定为附加参数,因为这可能会非常麻烦。因此,我认为将令牌自动全局附加到每个请求中可能会更有效。 我想知道ѭ1是否可以解决这个问题。似乎它应该能够在发出任何Ajax请求之前对其进行拦截,并可以在发送出去之前修改参数以添加令牌。但是,我不知道如何去完成它。我是否需要对“'Ajax.Responder'”进行原型设计,并为““老化””一个附加参数?还是有更简单的方法? 我对Ajax.Responder
的理解有些薄弱,因此,如果有人可以澄清为什么在答案中可能或不可能这样做,将不胜感激。
解决方法
原型在调用Responders回调之前设置了参数数组,因此您不仅可以将所需的项添加到参数哈希中。您可以将变量附加到url,例如,这将向每个请求添加缓存无效化随机数...
Ajax.Responders.register({
onCreate: function(o,x) {
o.url += (o.url.include(\'?\') ? \'&\' : \'?\') + \"rnd=\" + Math.floor(Math.random()*1000000000);
}
});
,我遇到了类似的问题,最终为Ajax.Request类实现了一个简单的addParameters()方法扩展,以针对GET和POST请求完成此操作。
您可以在此处查看实现:https://gist.github.com/3212413。
欢迎反馈!
,这是我根据Gavin的回答为POST请求实现的方式:
Ajax.Responders.register({
onCreate: function(request) { // add form_key to ajax request
var formKey = $(\'form_key\');
var parameters = request.parameters;
parameters.form_key = formKey.value;
request.options.postBody = Object.toQueryString(parameters);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。