【问题标题】:How to detect an HTTP request of a browser using Javascript?如何使用 Javascript 检测浏览器的 HTTP 请求?
【发布时间】:2012-06-12 11:35:52
【问题描述】:

我正在开发一个 ASP.NET MVC 3 Web 应用程序。我需要捕获来自我的 Web 界面的任何 Web 请求,并将一些值添加到其标题中。所以我正在搜索如何使用 Javascript 检测来自网络浏览器的 http 请求。不知道有没有可能。

我尝试了这个 Ajax 请求并且它有效。

    function loadXMLDoc() {

        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            window.XmlHttpRequest = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            window.XmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }

          window.XmlHttpRequest.onreadystatechange = function () {
          alert(window.XmlHttpRequest.readyState + "  " + window.XmlHttpRequest.status);

          if (window.XmlHttpRequest.readyState == 4 && window.XmlHttpRequest.status == 200) {
             document.getElementById("myDiv").innerHTML = window.XmlHttpRequest.responseText;
          }
        };

        window.XmlHttpRequest.open("GET", "@Url.Action("TestActionForJScripts","User")", true);
        window.XmlHttpRequest.setRequestHeader("TestKey", "TestValue");
        window.XmlHttpRequest.send();
    }

但我不需要创建请求对象。我正在尝试捕获从按钮、链接等生成的请求。

【问题讨论】:

    标签: javascript jquery asp.net-mvc-3 httpwebrequest xmlhttprequest


    【解决方案1】:
    window.XmlHttpRequest = new XMLHttpRequest();
    

    XmlHttpRequest 看起来像一个构造函数,因为它的大写名称。你应该

    • 将其重命名为小写以减少混淆,或者至少使用类似MyXhrInstance...
    • 使其成为该函数的局部变量,而不是 window 对象的全局属性

    捕获来自我的网络界面的任何网络请求

    您应该使用库函数,或者至少在任何地方都使用常见的function loadXMLDoc()。没必要到处都这样,遵循 DRY 原则。使用该函数的参数以使其具有适应性,而不是使用固定的 url。

    ...并在其标题中添加一些值

    仅在常用函数中执行此操作。

    【讨论】:

    • 如果你注意到,代码实际上并没有覆盖XMLHttpRequest,因为它定义了XmlHttpRequest,以Xml开头。无论如何,非常令人困惑。
    • 谢谢,我调整了答案。
    • 谢谢你们!很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多