附录

嵌入式 HTML 标签

<IMG SRC=”http://server/path/”>

浏览器发送的 HTTP GET 请求类似如下:

GET http://server/path/ HTTP/1.1
Host: host
User-Agent: Firefox/1.5.0.1
Content-length: 0

表单也可用于:

<FORM ACTION=”http://server/path/” NAME=”myform” METHOD=”POST”>
<INPUT TYPE=”HIDDEN” NAME=”Username” VALUE=”Foo”>
<INPUT TYPE=”HIDDEN” NAME=”Password” VALUE=”Bar”>
</FORM>

然后使用 JavaScript,我们可以自动提交表单:

<SCRIPT language=”JavaScript”> document.myform.submit();
</SCRIPT>

浏览器发送的 HTTP POST 请求类似如下:

POST http://server/path/ HTTP/1.1
Host: server
User-Agent: Firefox/1.5.0.1
Content-length: 25

Username=Foo&Password=Bar

一个 JavaScript 发起的表单提交可能导致的网络浏览器发出一个警告对话框,用户可能会进行点击。其他的 html

标签包括 APPLET,BASE,BODY,EMBED,LAYER,META,OBJECT,LINK,SCRIPT 和 STYLE 也可以达到同样的效果。

JavaScript DOM 对象

var img = new Image();
img.src = “http://server/path/”;

浏览器发送一个 HTTP GET 请求类似如下:

GET http://server/path/
HTTP/1.1
Host: server
User-Agent: Firefox/1.5.0.1
Content-length: 0

使用 JavaScript DOM 对象创建一个 HTML 表单:

var form = document.createElement(‘form’);
form.setAttribute(“action”, “http://server/path/”);
form.setAttribute(“method”, “POST”);
form.setAttribute(“name”, “myform”);
var input 1 = document.createElement(‘input’);
input1.setAttribute(“type”, “hidden”);
input1.setAttribute(“name”, “Username”);
input1.setAttribute(“value”, “Foo”);
var input 2 = document.createElement(‘input’);
input2.setAttribute(“type”, “hidden”);
input2.setAttribute(“name”, “Password”);
input2.setAttribute(“value”, “Bar”);
document.body.appendChild(form);
form.appendChild(input1);
form.appendChild(input2);
form.myform.submit();

JavaScript 会自动提交表单,导致 Web 浏览器发送一个 HTTP POST 请求类似如下:

POST http://server/path/ HTTP/1.1
Host: server
User-Agent: Firefox/1.5.0.1
Content-length: 25

Username=Foo&Password=Bar

XmlHttpRequest (XHR)

var req = new XMLHttpRequest();
req.open(‘GET’, ‘http://server/path)/’, true);
req.onreadystatechange = function () {
    if (req.readyState == 4) {
        alert(req.responseText);
    }
};
req.send(null);

浏览器发送的 HTTP GET 请求类似如下:

GET http://server/path/ HTTP/1.1
Host: server
User-Agent: Firefox/1.5.0.1
Content-length: 0

使用 XHR 发送一个 POST 请求:

var post_data = “Username=Foo&Password=Bar”;
var req = new XMLHttpRequest();
req.open(POST, ‘ http://host/path/’, true);
req.onreadystatechange = function () {
    if (req.readyState == 4) {
        alert(req.responseText);
    }
};
req.send(post_data);

发送的 POST 请求类似如下:

POST http://server/path/ HTTP/1.1
Host: server
User-Agent: Firefox/1.5.0.1
Content-length: 25

Username=Foo&Password=Bar