如何使AJAX请求看起来像常规的正常请求

时间:2011-06-21 21:38:50

标签: jquery ajax http-headers request-headers

我必须设置$.ajax上的哪些参数才能尝试将AJAX请求屏蔽为普通请求?我想这与正确的标题有关。

我认为问题的一个重要部分是,当处理本地.html文件时,jQuery会将Origin的标头值设置为null。< / p>

有没有办法取出Origin-header?

此时如果我通过网络浏览器浏览并执行jQuery AJAX请求,我会从同一网址获得不同的结果

3 个答案:

答案 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)

  1. jQuery没有设置Origin Header。只有浏览器本身才能做到。并且jQuery(或javascript)对此标题没有任何影响力。

  2. 这是一个关于Origin Header案例设置为null的链接 Null Origin Header

  3. jquery和常规请求之间的唯一区别确实是X-Requested-With:XMLHttpRequest你可以手动删除它,或者你可以使用新的XMLHttpRequest或fetch()来发出请求。

  4. 祝你好运