【问题标题】:intercept request headers of XMLHttpRequest javascript拦截 XMLHttpRequest javascript 的请求标头
【发布时间】:2015-11-30 23:30:18
【问题描述】:

我需要记录通过所有 XMLHttpRequests 发送到服务器的自定义请求标头。有很多方法可以拦截请求并获取 url 参数,但找不到任何描述请求标头。这甚至可能吗?

欢迎使用任何方法 javascript、jquery 等。

编辑:我不允许更改任何进行 ajax 查询的脚本。我需要通过添加另一个静态脚本来拦截查询。

【问题讨论】:

  • 可以包裹setRequestHeader,用来设置所有自定义的headers

标签: javascript jquery ajax header xmlhttprequest


【解决方案1】:

这是 service worker 最擅长的。拦截所有请求

self.addEventListener('fetch', function(event) {
    console.log('Handling request for', event.request.url);

    // Do whatever you want with request headers
    event.request.headers.forEach(function(header){

    });
});

唯一的缺点是它没有得到广泛的支持。并且站点必须在 https 中(服务工作者仅在其 localhost 时使用 https 和 http)这正是该功能的样子

但我可以向您保证,您可以使用jQuery ajaxStart 更轻松地做到这一点

【讨论】:

  • 为此,整个页面必须在 https 中?很多浏览器都支持这个功能吗?
  • 是的,服务工作者仅适用于 https 和 http-on-localhost。但是今天默认使用https是非常令人鼓舞的
【解决方案2】:

我认为存在一些 jquery 绑定在文档上的事件,例如ajaxComplete(),所以我认为您要查找的是ajaxSend(),希望对查看 sn-p 有用:

$(document).ajaxSend(function(event, xhr, settings) {
     //this will show the url of the request
     console.log("URL", settings.url)
})

settings 参数上,您可以获得其他 header 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-23
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多