我在文档的<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' }
});


以上请求仍包含“ cache-control”:“ no-cache”作为标题。我提出的服务要求禁止了缓存控制标头出现在请求中(即使它为空或具有缓存值)。

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

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

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

最佳答案

您无法做到。

根据jQuery.ajaxSetup的jQuery文档,


此处指定的设置将影响对$.ajax或基于Ajax的派生类(例如$.get())的所有调用。由于其他调用者(例如插件)可能期望使用正常的默认设置,因此这可能导致不良行为。因此,强烈建议您不要使用此API。而是在调用中显式设置选项或定义一个简单的插件即可。


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

为了防止这种情况,

您可以执行以下操作

代替使用$.ajaxSetup,尝试使用

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


针对您想要的特定要求

10-06 08:18