问题描述
||
我必须在“ 0”上设置哪些参数以尝试将AJAX请求屏蔽为普通请求?我想这与正确的标题有关。
我认为问题的很大一部分是在处理本地.html文件时,jQuery将
Origin
的标头值设置为null
。
有什么方法可以删除原始标头?
目前,如果我通过网络浏览器浏览并执行jQuery AJAX请求,则从同一URL获得不同的结果。
解决方法
与普通请求(无论是普通请求是什么意思)相比,用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案例设置为null的链接。null Origin Header
jQuery和常规请求之间的唯一区别确实是X-Requested-With:XMLHttpRequest您可以手动将其删除,也可以使用新的XMLHttpRequest或fetch()进行请求。
祝好运