如何使AJAX请求看起来像常规的正常请求
我必须设置$.ajax
上的哪些参数来尝试将AJAX请求作为普通请求进行掩码? 我想这与正确的标题有关。
我认为问题的一个重要部分是当处理本地.html文件时,jQuery将Origin
的header-value设置为null
。
有没有办法取出Origin-header?
在这一刻,如果我通过网络浏览器浏览它并且当我执行jQuery AJAX请求时,我会从同一个URL获得不同的结果 。
使用jQuery发送的AJAX请求与普通请求 (无论您的正常请求是什么意思)相比,唯一不同的是X-Requested-With: XMLHttpRequest
添加的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()发出请求。
祝好运