我必须设置哪些参数$.ajax
来尝试将 AJAX 请求屏蔽为正常请求?我想这与正确的标题有关。
我认为问题的很大一部分是在处理本地 .html 文件时,jQuery 将 header-value 设置为Origin
to null
。
有什么办法可以取出 Origin-header 吗?
此刻,如果我通过网络浏览器浏览相同的 URL 并执行 jQuery AJAX 请求,我会得到不同的结果。
我必须设置哪些参数$.ajax
来尝试将 AJAX 请求屏蔽为正常请求?我想这与正确的标题有关。
我认为问题的很大一部分是在处理本地 .html 文件时,jQuery 将 header-value 设置为Origin
to null
。
有什么办法可以取出 Origin-header 吗?
此刻,如果我通过网络浏览器浏览相同的 URL 并执行 jQuery AJAX 请求,我会得到不同的结果。
由于所有现代浏览器都强制执行同源策略,这是不可能的。
与普通请求相比,使用 jQuery 发送的 AJAX 请求唯一不同的是添加的X-Requested-With: XMLHttpRequest
HTTP 标头。可以像这样删除此标头:
$.ajax({
url: '/foo',
type: 'POST',
data: { bar: 'baz' },
beforeSend: function(xhr) {
xhr.setRequestHeader(
'X-Requested-With',
{
toString: function() { return ''; }
}
);
},
success: function(result) {
alert(result);
}
});
或全局,对于您网站上的所有 AJAX 请求:
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader(
'X-Requested-With',
{
toString: function() { return ''; }
}
);
}
});
jQuery 没有设置 Origin Header。只有浏览器本身可以做到。并且 jQuery(或 javascript)对此标头没有权力。
这是一个关于 Origin Header case 设置为 null Null Origin Header的链接
jquery 和常规请求之间的唯一区别确实是 X-Requested-With: XMLHttpRequest,您可以手动删除它,也可以使用新的 XMLHttpRequest 或 fetch() 发出请求。
祝你好运