gpt4 book ai didi

javascript - Ajax beforesend 方法在某些情况下不起作用

转载 作者:行者123 更新时间:2023-12-01 05:19:48 26 4
gpt4 key购买 nike

我有一个tile-standard jsp,它包含在我的应用程序的所有页面中。我试图在应用程序的所有 Ajax 请求中注入(inject)一些安全 token ,为此我将以下代码片段写入此 JSP 的 head 元素中。问题是,在大多数情况下,ajax 调用会按预期被拦截,并将 token 注入(inject)到数据中。但在某些情况下,beforesend 方法不会被调用,因此请求中不存在 token 。我不确定为什么有些 Ajax 调用没有被拦截,而另一些则被拦截。下面是代码片段:

    $(document).ready(function() {
$.ajaxSetup({
beforeSend: function(xhr, settings) {
var controlId = "<c:out value='${XXXControlIDXXX}' />";

// Injecting CSRF token id into data
if(controlId!=null) {
var csrfData = {
XXXControlIDXXX : controlId
}
settings.data += "&" + $.param(csrfData);
}
}
});
});

最佳答案

我发现了这个问题。非常感谢 Rory McCrossan 的投入,引导我走向正确的方向。因此,ajax 调用是在 ajaxsetup 之前发生的,因此我无法设置 token 。我使用了下面的代码片段,它不依赖于任何文档事件,只是位于页面上并在所有 ajax 调用上触发。

         $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
var controlId = "<c:out value='${ControlID}' />";
if(controlId) {
var csrfData = {
ControlID : controlId
}
options.data + = "&" + $.param(csrfData);
}
});

关于javascript - Ajax beforesend 方法在某些情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45585821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com