即使覆盖,jQuery $ .ajaxSetup头也适用于所有ajaxRequests

时间:2015-10-02 23:34:00

标签: javascript jquery ajax caching

我的文档<head>中的所有ajax调用都有以下参数。 (对于https://stackoverflow.com/a/12856562/627473

上的iOS ajax错误,我需要这个
$.ajaxSetup ({
            cache: false,
            headers: { "cache-control": "no-cache" }
        });

我有一个与之通信的服务,它以任何方式明确拒绝缓存控制头。

所以我在制作ajax请求之前尝试了以下内容。

$.ajaxSetup ({
cache: true,
headers: { 'Invoke-Control': 'EMVX' }
});

上述请求仍包含&#34;缓存控制&#34;:&#34; no-cache&#34;作为标题。我发出请求的服务要求禁止缓存控制头在请求中(即使它是空白的或具有缓存值。

我的请求还包括invoke-control(我想要的);但我不希望缓存控制显示出来。

我甚至尝试在$ .post请求中单独指定标头,它仍然合并来自$ .ajaxSetup的标头。

我正在使用jQuery v1.11.1。有解决方法吗?

1 个答案:

答案 0 :(得分:0)

你无法做到。

根据jQuery.ajaxSetup的jQuery文档,

  

此处指定的设置会影响 所有 $.ajax或基于Ajax的衍生产品(如$.get())的调用。这可能导致不良行为,因为其他呼叫者(例如,插件)可能期望正常的默认设置。出于这个原因,我们强烈建议不要使用此API。相反,在调用中显式设置选项或定义一个简单的插件来执行此操作。

它清楚地表明它会将标题附加到所有调用。

为了防止这种情况,

您可以执行以下操作

尝试使用

而不是$.ajaxSetup
$.ajax({
   beforeSend: function(){
     jqXHR.setRequestHeader("cache-control","no-cache");
}

根据您的具体要求