AJAX生成的HTTP请求消息的格式是什么?

时间:2014-11-18 18:51:20

标签: ajax http asynchronous http-headers xmlhttprequest

澄清:我感兴趣的是实际的HTTP请求消息(标题等),而不是用于创建它的代码。换句话说,就像这样:

GET /info.txt HTTP/1.1
Host: www.example.com
SpecialHTTPHeaderIndicatingAsynchRequest: 1
SpecialHTTPHeaderDefiningCallbackFunction: MyFunc
...

我正在努力弄清楚当HTTP服务器收到异步请求时会发生什么:服务器如何知道它是不同步的,回调函数是如何通过的,以及它立即给出的响应代码 (如果有的话)确认请求(在提交响应之前)。我一直认为HTTP服务器必须提供某种即时(即同步)响应来确认请求;但是现在我不太确定。 (如果它没有这样做,请求系统如何知道请求已被接收并正在处理,或者它不知道这个?)

1 个答案:

答案 0 :(得分:1)


服务器不知道请求是从具有同步或异步模式的客户端发送的。 现在让我们看看HTTP请求。我用PHP和HTML / JS做了一个小例子

<强> client.html

<html>
    <head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    </head>
    <script>
        $.ajax({
          url: "/StackOverFlow/sof/server.php",
         }).done(function( data ) {
            console.log(data);
          });   
    </script>
<body>

</body>
</html>

<强> server.php

<?php
    print json_encode(array("NAME" => "Factory", "VALUE" => "Constructor"));
?>

当我在浏览器中启动client.html并激活firebug(免费外接Firefox)时,我可以看到客户端发送的http请求,以及我从服务器获取的http响应
enter image description here

现在,如果我们查看%Apache_Home%/ logs / access.log,将会看到Apache以相同的方式处理Ajax请求,如果它来自浏览器请求(POST / GET)

::1 - - [18/Nov/2014:22:35:22 +0100] "GET /StackOverFlow/sof/server.php HTTP/1.1" 200 40 "http://localhost/stackoverflow/sof/client.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0"

希望有所帮助:)