This code has run for a while with no changes but has not debuted on a high volume production server. This should be rectified as I will install it on W3C's main server. It is made available for those collaborating and any who wish to experiment. If you have questions or bug fixes, please contact eric@w3.org. Interoperability tests can be run against the MetaPack implementations in Mozilla and libwww (not checked in yet).
HTTP Extensions originally derived from PEP but was paired down to reduce implementation complexity. It provides a rigorous way to handle the traditionally chaotic realm of X- headers. It is a mechanism to identify and allocate additional headers and communicate which agents may or must understand them.
The growing world of dynamic protocol extension currently looks to XML protocols like SOAP. There are unfortunate protocol implications that can be handled by HTTP Extensions.
The code for apache, mozilla and the HTTP Extensions come from three different repositories. You will first need to login to each:
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login # password is anonymous
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login # password is anonymous
cvs -d :pserver:anonymous@dev.w3.org:/sources/public login # password is anonymous
The easiest way to build is to pick someplace with a couple gig of free space (67 Meg for apache, 1798 Meg for mozilla, and 1 Meg for patches and added modules) and create a directory for this build, for instance, httpExt in the example below:
(mkdir httpExt && cd httpExt && make -f 2002/httpExt/apache_2/cvs.mk apache-DEBUG && make -f 2002/httpExt/mozilla_1/cvs.mk mozilla-DEBUG)
Now wait a looooong time. If you want to see it in action, try the demo:
(cd httpExt && make -f 2002/httpExt/Makefile demo)
If you wish to just build apache, you can easily removie the above mozilla lines and perform the telnet tests below.
I have no idea how one is supposed to add modules to apache-2 so I made a directory modules/w3c and stuck all the files in it. I can answer specific questions and would be glad to update this if someone can tell me the right way to do it. I currently patch the configure.in, see the makefile.
Tests were done with mozilla (with HTTP Extensions) and telnet and monitored with patchPanel.
These are documented in the mozilla tests.
First, the cache was filled with a request variant A:
GET http://localhost:9002/doc1.xhtml HTTP/1.1 Host: localhost:9002 User-Agent: telnet Accept: text/xhtml+xml;q=0.9 Keep-Alive: 300 Proxy-Connection: keep-alive 00-Action: GET-META(ACLs) 00-Accept: http://www.w3.org/1999/02/22-rdf-syntax-ns# Opt: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=00
GET /doc1.xhtml HTTP/1.1 Host: localhost:9002 User-Agent: telnet Accept: text/xhtml+xml;q=0.9 00-Action: GET-META(ACLs) 00-Accept: http://www.w3.org/1999/02/22-rdf-syntax-ns# Opt: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=00 Max-Forwards: 10 Via: 1.1 127.0.0.1:9003
HTTP/1.1 200 OK
Date: Tue, 06 Aug 2002 00:23:22 GMT
Server: Apache/2.0.40-dev (Unix)
Vary: 00-Accept,Opt
Last-Modified: Mon, 05 Aug 2002 08:32:14 GMT
ETag: "204185-102-c6d39f80"
Accept-Ranges: bytes
Content-Length: 1210
Content-Type: multipart/mixed; boundary=3a780105fa6bf2ca6
00-Package-Language: http://www.w3.org/1999/02/22-rdf-syntax-ns#
00-Content-Type: application/xhtml+xml
00-Content-Length: 258
Man: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=00
--3a780105fa6bf2ca6
Content-type: text/xml
Content-length: 776
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<s:resourceAccessRule
xmlns:s="http://www.w3.org/2001/02/acls/ns#">
<s:accessor rdf:resource="http://www.w3.org/Systems/db/webId?all=all" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#racl" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#head" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#get" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#connect" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#options" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#trace" />
<s:hasAccessTo rdf:resource="/doc1.xhtml" />
</s:resourceAccessRule>
</rdf:RDF>
--3a780105fa6bf2ca6
Content-type: application/xhtml+xml
Content-length: 258
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>doc1</title>
</head>
<body><p>content1</p></body>
</html>
--3a780105fa6bf2ca6--HTTP/1.1 200 OK
Date: Tue, 06 Aug 2002 00:23:22 GMT
Server: Apache/2.0.40-dev (Unix)
Vary: 00-Accept,Opt
Last-Modified: Mon, 05 Aug 2002 08:32:14 GMT
ETag: "204185-102-c6d39f80"
Accept-Ranges: bytes
Content-Type: multipart/mixed; boundary=3a780105fa6bf2ca6
00-Package-Language: http://www.w3.org/1999/02/22-rdf-syntax-ns#
00-Content-Type: application/xhtml+xml
00-Content-Length: 258
Man: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=00
Via: 1.1 127.0.0.1:9003
Content-Length: 1210
--3a780105fa6bf2ca6
Content-type: text/xml
Content-length: 776
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<s:resourceAccessRule
xmlns:s="http://www.w3.org/2001/02/acls/ns#">
<s:accessor rdf:resource="http://www.w3.org/Systems/db/webId?all=all" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#racl" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#head" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#get" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#connect" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#options" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#trace" />
<s:hasAccessTo rdf:resource="/doc1.xhtml" />
</s:resourceAccessRule>
</rdf:RDF>
--3a780105fa6bf2ca6
Content-type: application/xhtml+xml
Content-length: 258
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>doc1</title>
</head>
<body><p>content1</p></body>
</html>
--3a780105fa6bf2ca6--The hard part of implementing HTTP Extensions is insuring cache viability when the Vary: header references HTTP Extensions headers. Cache re-use was tested with variant B which was the same as A with a change to the extension prefix. The proxy server was able to serve the request as it had already cached a semantically equivilent request:
GET http://localhost:9002/doc1.xhtml HTTP/1.1 Host: localhost:9002 User-Agent: telnet Accept: text/xhtml+xml;q=0.9 Keep-Alive: 300 Proxy-Connection: keep-alive 01-Action: GET-META(ACLs) 01-Accept: http://www.w3.org/1999/02/22-rdf-syntax-ns# Opt: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=01
HTTP/1.1 200 OK
Date: Tue, 06 Aug 2002 01:10:15 GMT
Server: Apache/2.0.40-dev (Unix)
Vary: 00-Accept,Opt
ETag: "204185-102-c6d39f80"
Accept-Ranges: bytes
00-Package-Language: http://www.w3.org/1999/02/22-rdf-syntax-ns#
00-Content-Type: application/xhtml+xml
00-Content-Length: 258
Man: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=00
Via: 1.1 127.0.0.1:9003
Last-Modified: Mon, 05 Aug 2002 08:32:14 GMT
Content-Type: multipart/mixed; boundary=3a780b75131d22ca6
Age: 12705646
Content-Length: 1210
--3a780b75131d22ca6
Content-type: text/xml
Content-length: 776
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<s:resourceAccessRule
xmlns:s="http://www.w3.org/2001/02/acls/ns#">
<s:accessor rdf:resource="http://www.w3.org/Systems/db/webId?all=all" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#racl" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#head" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#get" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#connect" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#options" />
<s:access rdf:resource="http://www.w3.org/2001/02/acls/ns#trace" />
<s:hasAccessTo rdf:resource="/doc1.xhtml" />
</s:resourceAccessRule>
</rdf:RDF>
--3a780b75131d22ca6
Content-type: application/xhtml+xml
Content-length: 258
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>doc1</title>
</head>
<body><p>content1</p></body>
</html>
--3a780b75131d22ca6--The hard part of implementing HTTP Extensions is insuring cache viability when the Vary: header references HTTP Extensions headers. First, cache re-use was tested:
GET http://localhost:9002/doc1.xhtml HTTP/1.1 Host: localhost:9002 User-Agent: telnet Accept: text/xhtml+xml;q=0.9 Keep-Alive: 300 Proxy-Connection: keep-alive 01-Action: GET-META(ACLs) 01-Accept: http://www.w3.org/2001/12/soap-encoding Opt: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=01
GET /doc1.xhtml HTTP/1.1 Host: localhost:9002 User-Agent: telnet Accept: text/xhtml+xml;q=0.9 01-Action: GET-META(ACLs) 01-Accept: http://www.w3.org/2001/12/soap-encoding Opt: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=01 Max-Forwards: 10 Via: 1.1 127.0.0.1:9003
HTTP/1.1 200 OK
Date: Tue, 06 Aug 2002 00:38:50 GMT
Server: Apache/2.0.40-dev (Unix)
Last-Modified: Mon, 05 Aug 2002 08:32:14 GMT
ETag: "204185-102-c6d39f80"
Accept-Ranges: bytes
Content-Length: 258
Content-Type: application/xhtml+xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>doc1</title>
</head>
<body><p>content1</p></body>
</html>HTTP/1.1 200 OK
Date: Tue, 06 Aug 2002 00:38:50 GMT
Server: Apache/2.0.40-dev (Unix)
Vary: 01-Accept,Opt
ETag: "204185-102-c6d39f80"
Accept-Ranges: bytes
00-Package-Language: http://www.w3.org/1999/02/22-rdf-syntax-ns#
00-Content-Type: application/xhtml+xml
00-Content-Length: 258
Man: "http://www.w3.org/2001/07/07-MetaPackage/"; ns=00
Via: 1.1 127.0.0.1:9003
Last-Modified: Mon, 05 Aug 2002 08:32:14 GMT
ETag: "204185-102-c6d39f80"
Accept-Ranges: bytes
Content-Type: application/xhtml+xml
Via: 1.1 127.0.0.1:9003
Content-Length: 258
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>doc1</title>
</head>
<body><p>content1</p></body>
</html>$Id: Overview.html,v 1.6 2002/08/06 02:09:00 eric Exp $