Microsoft Corporation
Updated April 15, 1999
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
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.
Note 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>