总是在XHR请求中附加一些内容
Append something always to an XHR Request
我想将JS变量附加到将从我的单页web应用程序发出的每个XHR请求。
实现这一目标的最佳方法是什么?我不想建立具有此属性的特殊发送方法,因为可能有第三方与我的应用程序集成。
我考虑过覆盖XHR对象上的send方法,但这也不被认为是好的风格。由于请求是跨域的,我无法使用cookie。
对此有什么更好的想法或方法吗?
谢谢!-Alessandro
如果你真的想在不添加任何类似库的功能的情况下扩展现有功能,你可以使用monkey补丁来解决这个问题:
(function() {
var originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
var getParameter = 'foo=bar';
if(url.indexOf('?') === -1) {
url = url + '?' + getParameter;
} else {
url = url + '&' + getParameter;
}
console.log('you just got monkey-patched! url is now:', url);
originalOpen.call(this, method, url, async, user, password);
}
})();
var request = new XMLHttpRequest();
request.open('get', 'http://google.com');
另请参阅这个jsfiddle以获得一个工作示例。
如果修补了send()
函数,那么在将内容注入请求主体时也可以使用相同的技术。若要这样做,请确保注意要传输的数据类型(请参阅MDN)。将参数附加到二进制主体是没有意义的;)
相关文章:
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 通过XHR请求将MYSQL数组从PHP返回到Javascript
- 正在发送请求中包含数组的qx.io.request.Xhr请求
- XHR请求的CSRF预防
- onReadyStateChange未在XHR请求的IE中激发
- 终止所有正在进行的XHR请求
- Web 工作线程中的同步 XHR 请求是否仍会锁定浏览器
- 在使用量角器进行e2e测试时记录xhr请求
- Angular在不触发摘要的情况下执行XHR请求
- 如果我使用xhr请求,那么ajaxComplete的等价物是什么
- 总是在XHR请求中附加一些内容
- 同时发出的最大 xhr 请求量
- Dojo 两个 XHR 请求和回调函数仅在两者完成时触发
- 我可以/如何显式终止长时间运行的 xhr 请求
- 服务工作线程是否可以响应同步 XHR 请求
- 如何将 xhr 请求转换为角度$http请求
- 如何捕获任何 XHR 请求
- 如何显示 XHR 请求的加载图标
- 发送 XHR 请求而不接收任何数据
- 返回 WinJS.xhr 请求结果