Appendixes
The FrontPage Remote Procedure Call Protocol
The FrontPage client and the FrontPage Server Extensions communicate with each other using a Remote Procedure Call (RPC) protocol that is layered on top of HTTP and HTML. When the FrontPage client needs the server extensions to do something, it sends a POST request to the server.
This POST request is addressed to one of three DLLs within the web that is being authored
- Requests for browse-time actions go to Shtml.dll or Shtml.exe
- Requests for authoring-time actions go to Author.dll
- Requests for administrative actions go to Admin.dll
The body of the POST request contains the command in the form "method=command", where "command" is a string indicating the operation that the FrontPage client wants the server to execute.
The Server Extensions respond to the request by executing the command and returning a "200 OK" response. The message body of the response contains information returned by the command, in nested name-value pairs.
The message body takes this general form:
<html>
<head></head>
<body>
<p>item1=value
<p>item2=value
<p>item3=<ul>
<li>item3.1=value
<li>item3.2=value
<ul>
<li>item3.3.1=value
<li>item3.3.2=value
</ul>
</body>
</html>
To illustrate how the RPC protocol works, here is a look at part of a FrontPage client/Server Extensions conversation. In this sample, the FrontPage client establishes a connection with a server running the Server Extensions and determines which version of the Server Extensions are running.
This transcript has been edited for clarity and unimportant parts have been suppressed.
GET /_vti_inf.html HTTP/1.0
Date: Fri, 17 Apr 1998 02:05:31 GMT
User-Agent: Mozilla/2.0 (compatible; MS FrontPage 3.0)
Host: fp4
The server responds by returning the file. The client reads the response and finds the value associated with "FPShtmlScriptUrl", which tells it where to POST requests for browse-time commands to be executed. Now that it knows where to POST to, it asks the server what version of the server extensions it is running:
POST /_vti_bin/shtml.dll/_vti_rpc HTTP/1.0
User-Agent: MSFrontPage/4.0
Content-Type: application/x-www-form-urlencoded
method=server version
The Server Extensions process the "method=server version" request and return their version information:
HTTP/1.0 200 OK
Server: Microsoft-IIS/3.0
Date: Fri, 17 Apr 1998 02:04:43 GMT
Content-type: application/x-vermeer-rpc
<html><head><title>RPC packet</title></head>
<body>
<p>method=server version
<p>server version=
<ul>
<li>major ver=3
<li>minor ver=0
<li>phase ver=2
<li>ver incr=926
</ul>
</body>
</html>
|