有没有一种全局方法可以将 headers 添加到 $.ajax post 调用?
Is there a global way to add headers to $.ajax post calls?
$.ajax({
url: "RestEndPoint",
headers: {
'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
}
method: 'POST',
dataType: 'JSON',
data: dataObj,
success: function(data) {
console.log('Success')
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
有数百个 ajax post 调用。有没有办法在一个地方拦截所有调用并在那里添加 header ?无法使用 ajaxPrefilter,因为 jquery 1.11.3 不支持它。
var csrf_token = $('meta[name="csrf-token"]').attr('content');
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
if (options['type'].toLowerCase() === "post") {
jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
使用ajaxPrefilter解决
您可以通过在 $.ajaxsetup
函数
上设置它来全局执行
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "RestEndPoint",
headers: {
'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
}
method: 'POST',
dataType: 'JSON',
data: dataObj,
success: function(data) {
console.log('Success')
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
有数百个 ajax post 调用。有没有办法在一个地方拦截所有调用并在那里添加 header ?无法使用 ajaxPrefilter,因为 jquery 1.11.3 不支持它。
var csrf_token = $('meta[name="csrf-token"]').attr('content');
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
if (options['type'].toLowerCase() === "post") {
jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
使用ajaxPrefilter解决
您可以通过在 $.ajaxsetup
函数
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});