我的文档<head>
中的所有ajax调用都有以下参数。 (对于https://stackoverflow.com/a/12856562/627473
$.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。有解决方法吗?
答案 0 :(得分:0)
你无法做到。
根据jQuery.ajaxSetup的jQuery文档,
此处指定的设置会影响 所有 对
$.ajax
或基于Ajax的衍生产品(如$.get()
)的调用。这可能导致不良行为,因为其他呼叫者(例如,插件)可能期望正常的默认设置。出于这个原因,我们强烈建议不要使用此API。相反,在调用中显式设置选项或定义一个简单的插件来执行此操作。
它清楚地表明它会将标题附加到所有调用。
为了防止这种情况,
您可以执行以下操作
尝试使用
而不是$.ajaxSetup
$.ajax({
beforeSend: function(){
jqXHR.setRequestHeader("cache-control","no-cache");
}
根据您的具体要求