<tag>content</tag>
<P>
<BODY>
,
<I>
,
<H1>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Draft//EN"> <html> <head> <title>HTML and HTTP</title> </head> <body> <center> <h1>HTML and HTTP</h1> </center> <h2>Basic HTML</h2> <ul> <li> HTML is a markup language defined in SGML (Standard Generalised Markup Language) <li> Markup is by tags <br> <tag>content</tag> </ul> </body> </html>
<!ENTITY % HTML.Version "-//W3C//DTD HTML 4.01 Transitional//EN">
<frameset cols="30%,70%"> <frame src="index_list.html" name=list> <frame src="new.html" name="contents"> <noframes> <a href="index_list.html"> Index of Systems Software pages </a> </noframes> </frameset>
target
frame
<a href="..." target="contents">will load the frame called
contents
with the contents
of the url
_blank
- a new unnamed window
_self
- the current frame
_parent
- the frameset parent
_top
- the top window
<html> <head> <frameset cols="30%,70%"> <frame src="index_list.html" name=list> <frame src="new.html" name="contents"> <noframes> <a href="index_list.html"> Index of Systems Software pages </a> </noframes> </frameset>
<a href="new.html" target="contents"> What's new </a> <a href="unix.html" target="_parent"> Unix API </a>
<frameset cols="30%,70%"> <frame src="unix_list.html" name=list> <frame src="unix_overview.html" name="contents"> <noframes> <a href="unix_list.html"> Unix API pages </a> </noframes> </frameset>
<a href="unix_overview.html" target="contents"> Overview </a><br> <a href="utilities/unix.html" target="contents"> Utilities </a><br> <a href="index.html" target="_parent"> Systems Software Home </a>
<form action="http://pandonia/cgi-script" method="post"> <label> First name <input type="text" name="firstname"> </label> <label> Last name <input type="text" name="lastname"> </label> </form>
<p>...
is wrong
<p>...</p>
is right
<br>
is wrong
<br/>
is right
<br />
<P>...</P>
is wrong
<p>...</p>
is right
<input type="text" name="firstname"
id="firstname">
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Virtual Library</title> </head> <body> <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p> </body> </html>
Status-Line *((general-header | reponse-header | entity-header) CRLF) CRLF [message-body]
HTTP-Version SP Status-Code SP Reason-Phrase CRLF
Content-Type: text/html Content-Length: 2000 Expires: Thu, 01 Dec 1994 16:00:00 GMT
Status-Code = "200" ; OK | "201" ; Created | "202" ; Accepted | "204" ; No Content | "301" ; Moved permanently | "302" ; Moved temporarily | "304" ; Not modified | "400" ; Bad request | "401" ; Unauthorised | "403" ; Forbidden | "404" ; Not found | "500" ; Internal server error | "501" ; Not implemented | "502" ; Bad gateway | "503" | Service unavailable | extension-code
Test what browsers send to servers using this "echo server"
import java.net.*; import java.io.*; public class EchoServer { final static protected int PORT = 8000; public static void main(String[] argv) { try { new EchoServer(); } catch(IOException e) { e.printStackTrace(); } } public EchoServer() throws IOException { ServerSocket server = new ServerSocket(PORT); Socket socket = server.accept(); InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); DataOutputStream out = new DataOutputStream(os); DataInputStream in = new DataInputStream(is); out.writeBytes("HTTP/1.1 404 OK\n"); out.writeBytes("Content-Type: text/plain\n\n"); String line; while ((line = in.readLine()) != null && (line.length() != 0)) { out.writeBytes(line + "\n"); } out.close(); socket.close(); } }
telnet
to port 80 and issuing an HTTP request
User-Agent
string starts with "Mozilla",
then the browser is Netscape...
Mozilla/4.7 [en] (X11; I; Linux 2.2.5-22 i586)
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
Lynx/2.8.1rel.2 libwww-FM/2.14
User-Agent
string