我在文档的<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");
}
针对您想要的特定要求