【问题标题】:Inspect HTTP response using a Crossrider extension使用 Crossrider 扩展检查 HTTP 响应
【发布时间】:2014-06-18 05:43:38
【问题描述】:

根据 Crossrider 文档,目前有一个带有 onRequest 事件的 webRequest 对象,它允许访问请求 URI 等,但我找不到任何方法来检查响应数据。我想知道是否有一种方法可以实际检查该请求的响应,例如响应标头和可能的响应数据。感谢您的帮助。

【问题讨论】:

    标签: httpresponse crossrider


    【解决方案1】:

    我在这里很危险,但我认为您是在 AJAX 请求之后,在这种情况下,您是在 appAPI.request API 之后,您确实可以在其中获取响应和标头数据。 appAPI.webRequest API 类似于 Chrome's webRequest API 用于“观察和分析流量以及拦截、阻止或修改正在进行的请求”。

    如果不是这种情况,请您澄清一下您的情况。

    [回应评论]

    首先让我澄清一下,webRequest API 在发出请求之前运行(即浏览器正在请求页面但尚未发出实际的 HTTP 请求),因此它与讨论响应数据无关。

    但是,由于在webRequest的详细信息中提供了URL,因此您可以使用前面提到的appAPI.request API 自己获取响应数据和标头,如下所示:

    appAPI.ready(function() {
        appAPI.webRequest.monitor.onBeforeNavigate.addListener({
            callback: function(details) {
                appAPI.request.get({
                    url: details.requestUrl,
                    onSuccess: function(response, additionalInfo) {
                        appAPI.db.async.set(details.requestUrl, {
                            response: response,
                            headers: additionalInfo.headers
                        });
                    }
                });
            }
        });
    });
    

    注意:在本例中,我使用了新的 webRequest.monitor API,专为监控而设计的轻量级 API。目前没有文档记录(文档应该在下周左右完成),但您可以开始在 Chrome、Firefox 和 Internet Explorer 上使用它。

    [披露:我是 Crossrider 的员工]

    【讨论】:

    • 感谢您的回复。我正在尝试开发诸如流量监视器之类的东西,并可能保存响应数据。所以页面会发出许多不同的 HTTP 请求,我希望我的扩展程序可以完全看到响应头和数据以及请求(看起来已经可以使用 webRequest.onRequest 事件完成)。谢谢。
    • 感谢您的建议。在 onBeforeNavigate 监听器的回调函数中,当我调用 appAPI.request.get 时,实际上会向 details.requestUrl 发出另一个单独的请求,对吗?我希望避免发出任何额外的请求,而只是监视发出的请求/响应并收到浏览器。
    • 正确,appAPI.request.get 实际上会向 details.requestUrl 发出单独的请求,但这是必要的,因为 onBeforeNavigate 是在浏览器发出请求之前触发的。
    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多