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

Seb*_*son 3 ajax jquery request-headers http-headers

我$.ajax必须设置哪些参数来尝试将AJAX请求作为正常请求进行掩码?我想这与正确的标题有关.

我认为问题的一个重要部分是当处理本地.html文件时,jQuery将header-value设置为Originto null.

有没有办法取出Origin-header?

在这一刻,如果我通过网络浏览器浏览它并且当我执行jQuery AJAX请求时,我会从同一个URL获得不同的结果.

Dar*_*rov 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);   
    }
});
Run Code Online (Sandbox Code Playgroud)

或全局,对于您网站上的所有AJAX请求:

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader(
            'X-Requested-With',
            {
                toString: function() { return ''; }
            }
        );
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这不会删除标题,它只是将其值设置为空字符串.标题仍然发送. (3认同)

Seb*_*son 5

由于所有现代浏览器都实施了相同来源策略,因此这是不可能的。