我必须设置$.ajax
上的哪些参数才能尝试将AJAX请求屏蔽为普通请求?我想这与正确的标题有关。
我认为问题的一个重要部分是,当处理本地.html文件时,jQuery会将Origin
的标头值设置为null
。< / p>
有没有办法取出Origin-header?
此时如果我通过网络浏览器浏览并执行jQuery AJAX请求,我会从同一网址获得不同的结果。
答案 0 :(得分:6)
使用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 ''; }
}
);
}
});
答案 1 :(得分:4)
由于所有现代浏览器都强制执行Same Origin Policy,这是不可能的。
答案 2 :(得分:0)
jQuery没有设置Origin Header。只有浏览器本身才能做到。并且jQuery(或javascript)对此标题没有任何影响力。
这是一个关于Origin Header案例设置为null的链接 Null Origin Header
jquery和常规请求之间的唯一区别确实是X-Requested-With:XMLHttpRequest你可以手动删除它,或者你可以使用新的XMLHttpRequest或fetch()来发出请求。