无法在proxy / chrome的开发工具中看到AJAX调用

时间:2016-09-15 08:53:08

标签: javascript jquery ajax

同事使用以下代码片段从数据库获取URL,然后提交"虚拟"形成该URL。

$.ajax({
                url: location.origin + location.pathname + "data/getURL.php",
                method: "POST",
                data: {
                    userName: user
                },
                success: function( data : any, textStatus : string, jqXHR : JQueryXHR){
                    console.log(data);
                    var url = (JSON.parse(data)).url;

                    if(url !== undefined && url !== null && url !== ""){
                        var sender : HTMLFormElement = document.createElement("form");
                        sender.setAttribute("action", `http://${url}/receive`);
                        sender.setAttribute("method", "POST");

                        var userSenderField = document.createElement("input");
                            userSenderField.setAttribute("type", "hidden");
                            userSenderField.setAttribute("name", "user");
                            userSenderField.setAttribute("value", user);
                        sender.appendChild(userSenderField);

                        var passSenderField = document.createElement("input");
                            passSenderField.setAttribute("type", "hidden");
                            passSenderField.setAttribute("name", "password");
                            passSenderField.setAttribute("value", password);
                        sender.appendChild(passSenderField);

                        document.body.appendChild(sender);
                        sender.submit();

使用Burp Suite或Chrome的开发工具,我可以看到getURL.php的来电,但我无法看到http://url/receive的来电。为什么呢?

1 个答案:

答案 0 :(得分:0)

为了论证,让我们说你对data/getURL.php的ajax调用成功了,但却传递了错误或意外的数据。

然后你最终进入你的ajax呼叫成功处理程序。

成功处理程序立即创建一个新表单,用(坏)数据填充它,然后提交表单。

这会导致回发。

Chrome的开发工具默认情况下会在回发时清除网络面板,同时清除对"data/getURL.php"的呼叫,因此您实际上从未看到呼叫成功,并且无法在网络面板中看到它做了什么。 (因此,您不知道data/getURL.php向您提供了错误的数据。

如果你在提交表单之前在ajax成功处理程序中放置一个断点,你实际上可以看到发生了什么。