gpt4 book ai didi

ajax - 我可以从ajax请求中删除X-Requested-With header 吗?

转载 作者:行者123 更新时间:2023-12-03 21:39:03 31 4
gpt4 key购买 nike

我想知道是否有人有尝试从 jquery(或纯 JS)发出的 ajax 请求中删除“X-Requested-With” header 的经验。这可能吗?

第二部分:你知道油脂猴的ajax请求是否设置了这个 header 吗?

谢谢

标题看起来像这样:

X-Requested-With XMLHttpRequest

最佳答案

@vamp 提出的在 jQuery 中删除 header 的解决方案是正确的,但正如其他人所说,它仍然会导致发送空的 X-Requested-With header 。

beforeSend 回调接收 jQuery 的 XHR 对象 (jqXHR),而不是实际的 XMLHttpRequest 对象 (xhr),该对象直到调用 beforeSend 后才被实例化。

jqXHR 中的 setRequestHeader 方法将 header 添加到对象中,然后在将 X-Requested-With 条目添加到 header 对象之后,稍后使用同名的 xhr 方法对该对象进行迭代。

这是 jQuery 中发生这种情况的部分:

if ( !options.crossDomain && !headers["X-Requested-With"] ) {
headers["X-Requested-With"] = "XMLHttpRequest";
}

for ( i in headers ) {
xhr.setRequestHeader( i, headers[ i ] );
}

这会导致问题:如果您不指定 X-Requested-With header ,则 jQuery 会指定(除非 crossDomain 设置计算结果为 false,但这可能不是所需的解决方案)。然后它立即设置 xhr header ,该 header 无法取消设置。

<小时/>

要防止使用 jQuery.ajax 发送 X-Requested-With header :

jQuery.ajax 提供了一个设置 xhr,它会覆盖 jQuery 的内置工厂方法来创建 XMLHttpRequest 对象。通过包装此工厂方法,然后包装浏览器的 native setRequestHeader 方法,可以忽略来自 jQuery 的用于设置 X-Requested-With header 的调用。

jQuery.ajax({

url: yourAjaxUrl,

// 'xhr' option overrides jQuery's default
// factory for the XMLHttpRequest object.
// Use either in global settings or individual call as shown here.
xhr: function() {
// Get new xhr object using default factory
var xhr = jQuery.ajaxSettings.xhr();
// Copy the browser's native setRequestHeader method
var setRequestHeader = xhr.setRequestHeader;
// Replace with a wrapper
xhr.setRequestHeader = function(name, value) {
// Ignore the X-Requested-With header
if (name == 'X-Requested-With') return;
// Otherwise call the native setRequestHeader method
// Note: setRequestHeader requires its 'this' to be the xhr object,
// which is what 'this' is here when executed.
setRequestHeader.call(this, name, value);
}
// pass it on to jQuery
return xhr;
},

success: function(data, textStatus, jqXHR) {
// response from request without X-Requested-With header!
}

// etc...

});

关于ajax - 我可以从ajax请求中删除X-Requested-With header 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3372962/

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