必须设置$.ajax
上的什么参数来尝试将AJAX请求屏蔽为正常请求?我想它必须处理正确的标题。如何使AJAX请求看起来像普通的正常请求
我觉得问题的很大一部分是在本地的.html文件中工作时,jQuery的设置为Origin
到null
头值。
有没有办法取出Origin-header?
在这个时候如果我通过网页浏览器浏览并使用jQuery AJAX请求,我会从相同的URL得到不同的结果。
必须设置$.ajax
上的什么参数来尝试将AJAX请求屏蔽为正常请求?我想它必须处理正确的标题。如何使AJAX请求看起来像普通的正常请求
我觉得问题的很大一部分是在本地的.html文件中工作时,jQuery的设置为Origin
到null
头值。
有没有办法取出Origin-header?
在这个时候如果我通过网页浏览器浏览并使用jQuery AJAX请求,我会从相同的URL得到不同的结果。
由于Same Origin Policy所有现代浏览器执行,这是不可能的。
与jQuery相比,使用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 ''; }
}
);
}
});
似乎不起作用。如果这有什么不同,我正在做GET。 –
@Seb Nilsson,不管它是做GET还是POST都没有什么区别。在这两种情况下,以下代码都会删除此实时演示中显示的“X-Requested-With”:http://jsfiddle.net/AUGQJ/1/(使用FireBug检查请求标题,并且不会找到一个'X-Requested-With')。 –
我在之前没有找到它。但我仍然认为Origin设置为null是一个问题。 –
jQuery没有设置Origin Header。只有浏览器本身才能做到。而jQuery(或JavaScript)没有权力通过这个头。
这里是关于原产头的情况下设置为null Null Origin Header
jQuery和常规要求的唯一区别链接确实是X-要求,有了:XMLHttpRequest的也可以手动删除它,或者你可以请求与新的XMLHttpRequest,或与fetch()。
好运
如果你得到不同的结果,这是因为该服务欲火。不要试图解决它。 –