使用JavaScript或jQuery,是否有一种方法可以跟踪网页发送的HTTP请求(包括标头、参数等)?我想要实现的功能类似于Google Chrome开发者控制台的“网络”选项卡的功能。我找到的所有解决方案都是跟踪Ajax请求或使用JavaScript(使用XMLHttpRequest对象)进行的请求。这个功能应该也支持跨浏览器。
使用JavaScript或jQuery,是否有一种方法可以跟踪网页发送的HTTP请求(包括标头、参数等)?我想要实现的功能类似于Google Chrome开发者控制台的“网络”选项卡的功能。我找到的所有解决方案都是跟踪Ajax请求或使用JavaScript(使用XMLHttpRequest对象)进行的请求。这个功能应该也支持跨浏览器。
Make sure you know all the places where a request can get fired, and attach an event to it, say RequestFired
. And bind the onRequestFired
event in your JavaScript / jQuery code.
Go through the Network Developers document or each browser and based on the browser, execute it. This feature may not be available in older browsers like Internet Explorer 7 and 8.
If it is for a particular server, read the Server Log using a server side script and access it using an endpoint. You can use long polling method and fetch the contents of the log, may be this way:
// jQuery
$(document).ready(function () {
setInterval (function () {
$("#log").load("/path/to/endpoint.log");
}, 5000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<h3>Logs</h3>
<div id="log"></div>
你无法追踪所有的东西。
例如,Xmlhttprequest 中的一些调用是透明的(301 HTTP 状态码),无法由 javascript 客户端处理。
请参阅 XMLHTTrequest 规范: http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send-method
这是其中的几个原因之一。如果你想追踪一个“网页”的请求,最好使用该浏览器的开发工具或数据包捕捉。
在用户体验方面,只能做出非常有限的事情。