我在本地存储中有一些内容。每次通过调用类似(xhr.setRequestHeader('custom-header','value');)之类的服务器发出请求时,我想在http头中发送它。
,而不是在每次请求之前调用执行此任务的函数,而是希望它被调用。答案 0 :(得分:4)
这可以通过覆盖send
方法轻松完成:
// save the real `send`
var realSend = XMLHttpRequest.prototype.send;
// replace `send` with a wrapper
XMLHttpRequest.prototype.send = function() {
this.setRequestHeader("X-Foobar", "my header content");
// run the real `send`
realSend.apply(this, arguments);
}
这会将XMLHttpRequest.prototype.send
转换为执行某些任意操作的函数(此处,在X-Foobar
实例上设置XMLHttpRequest
请求标头),然后使用real {执行实际的Ajax请求{1}}方法。
答案 1 :(得分:0)
本地存储实际上是设计为而不是以自动发送到服务器。这样做是为了改进cookie,这会导致很大的开销(如果他们持有大量数据),因为它们随每个页面请求一起发送。这会减慢速度,特别是对于手机来说非常糟糕。因此,您必须继续使用已使用的方法,或采取其他回复中提供的其他建议。