Abstract:
Dialog state between a client and a server is tracked. When sending a communication from the server to the client, dialog state for a dialog between the client and the server is stored in storage within the server. A key is included in the communication from the server to the client. The key references a storage location within the server in which the dialog state is stored.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    The present invention pertains to obtaining information through a network and pertains particularly to a reliable web server that uses a state machine and user token.  
           [0002]    The Internet started as a cooperative research effort of the United States Federal Government known as the Advanced Research Project Agency Network (ARPAnet). The ARPAnet tied universities and research and development organizations to the U.S. military establishment. More recently, the Internet has extended its use commercially and internationally. It is the world&#39;s largest computer network.  
           [0003]    A Uniform Resource Locator (URL) address is an Internet address. A URL address consists of a string expression that designates a resource (referred to herein as a URL page) on the Internet. For example, the resource is a particular file on a computer connected to the Internet.  
           [0004]    Web browsers such as Netscape Navigator browser available from Netscape, and Internet Explorer browser available from Microsoft Corporation use URL addresses to access resources (URL pages) on the Internet. The World Wide Web (Web) allows users to navigate Internet resources intuitively, without using internet protocol (IP) addresses or other special technical knowledge. The Web is made up of interconnected web pages, or web documents stored on web servers. These pages are accessed with the use of a web browser.  
           [0005]    The Web uses a transfer method known as Hypertext Transfer Protocol (HTTP). One format for information transfer is to create documents using Hypertext Markup Language (HTML). HTML pages are made up of standard text as well as formatting codes that indicate how the page should be displayed. A web browser reads these codes in order to display the page.  
           [0006]    Each Web page may contain graphics, video and audio information in addition to text. Hidden behind certain text, pictures or sounds are connections, known as hypertext links (links), to other pages within the same web server or on other computers within the Internet. Each link is directed to a web page by a Uniform Resource Locator (URL). A user may also specify a known URL by writing it directly into the command line of a web. browser.  
           [0007]    In existing web browser client to web server dialogs, when a client browser proceeds non-sequentially, for example when a users uses the “back” feature of a web browser, the web server may be left in an unstable or a confused state. An unstable or a confused state can also result when a web browser client accesses a web server in the middle of a sequence of processes. The result is the client state information does not map to a valid state on the web server.  
           [0008]    Many web servers track user information as cookies. A cookie is a small text file placed on a client&#39;s hard disk. Cookies typically contain information about the user and user preferences for a Web site. For example, if a user looks at a flight schedule on an airline&#39;s Web site, the site might create a cookie that records the pages visited on the site. That way, the site can customize the pages seen by the user at the next visit to the web site. A cookie stores information provided by the user, or the choices made by the user when visiting a Web site. Cookies can also store information that the server sends.  
           [0009]    In addition to cookies, it is possible for a web server to use dynamic information (tokens or hidden state information) to track user information. However, in systems that generate dynamic content, adding extra dynamic pages increases the complexity of the code dramatically, because the entire state must be passed around from page to page. Additionally, since server controls and the “state” of a session is maintained in the client, this information can be easily decoded and simulated using a web browser&#39;s View Source function, opening dangerous security holes.  
         SUMMARY OF THE INVENTION  
         [0010]    In accordance with the preferred embodiment of the present invention, dialog state between a client and a server is tracked. When sending a communication from the server to the client, dialog state for a dialog between the client and the server is stored in storage within the server. A key is included in the communication from the server to the client. The key references a storage location within the server in which the dialog state is stored. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0011]    [0011]FIG. 1 is a simplified block diagram illustrating a dialog between a client web browser and a web server in accordance with the prior art.  
         [0012]    [0012]FIG. 2 is a simplified block diagram illustrating a dialog between a client web browser and a web server in accordance with a preferred embodiment of the present invention.  
         [0013]    [0013]FIG. 3 is a simplified flow chart that illustrates operation of a web server to track dialog state in a web server state cache in accordance with a preferred embodiment of the present invention. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0014]    [0014]FIG. 1 is a simplified block diagram illustrating a dialog between a client web browser  11  and a web server  12  in accordance with the prior art. As illustrated by box  13 , client web browser  11  makes a request for an interactive Common Gateway Interface (CGI) page (Page B) from web server  12 . As illustrated by a box  14 , web server  11  returns back Page B as a CGI-enabled page with a number of form controls contained in the page. Embedded hidden variables in Page B define the sent page as Page B and tell web server  12  what should be done with data when client web browser  11  submits the form.  
         [0015]    As illustrated by a box  15 , client web browser  11  submits the form on Page B when a user clicks a submit button within Page B as displayed on client web browser  11 . Web server  12  uses encoded information from Page B to manipulate a database and generates a page C. As illustrated by a box  16 , web server  12  sends page C back to client web browser  11 .  
         [0016]    If, for example, the users hits the “Back” button in client web browser  11 , web browser  11  pulls a copy of Page B from cache and displays Page B to the user. As illustrated by a box  17 , client web browser  11  re-submits the form on Page B when a user again clicks the submit button within Page B. Upon receiving resubmitted Page B, web server  12  becomes confused. As illustrated by box  18 , a response is sent to client web browser  11  from web server  12 ; however, the results returned to client web browser  11  may or may not be the results anticipated by the user.  
         [0017]    Using the present invention, invalid operations are detected and avoided. In traditional systems, it is nearly impossible to detect when a user has pressed Back, Forward, reloaded a page, or submitted a form twice by clicking on the button twice. All of these events can lead to unpredictable results in a complicated multi-step form, and all can be detected and avoided using the user token model described below.  
         [0018]    In FIG. 2 a web server state cache  29  is added to a web server  22  allowing web server  22  to track the state of a dialog with a client web browser  21 . As illustrated by box  23 , client web browser  21  makes a request for an interactive CGI page (Page B) from web server  22 . Web server  22  generates a token, i.e., a unique key (first key), corresponding to Page B and client web browser  21 . Web server  22  also makes an entry into web server state cache  29  for the first key as illustrated by the entry in Table 1 below. Use of such entries in effect implements a state machine.  
                           TABLE 1                                       Entry for First Key               Page B           Expires 07/01/01 at 3:00 PM PST           Client: John Doe           Next Action: Create Page C                      
 
         [0019]    As illustrated by a box  24 , web server  21  returns back Page B as a CGI-enabled page. The first key is embedded in page B.  
         [0020]    As illustrated by a box  25 , client web browser  21  submits the form on Page B when a user clicks a submit button within Page B as displayed on client web browser  21 . The first key is also sent back to web server  22  along with page B. Web server  22  looks up in web server state cache  29  the entry for the first key. The entry instructs web server  22  to generate Page C. Web server  22  uses encoded information from Page B to generate a page C.  
         [0021]    Web server  22  changes the entry for the first key in web server state cache  29  to indicate the first key has been accessed. Web server state cache  29  also makes a new entry into web server state cache  29  for a second key. Theses two entries are illustrated by the entries set out in Table 2 below:  
                           TABLE 2                                       Entry for First Key               Page B           Already Accessed           Client: John Doe           Entry for Second Key           Page C           Expires 07/01/01 at 3:30 PM PST           Client: John Doe           Next Action: Create Page D                      
 
         [0022]    As illustrated by a box  26 , web server  22  sends page C back to client web browser  21 . The second key is embedded in page C.  
         [0023]    If, for example, the users hits the “Back” button in client web browser  21 , web browser  21  pulls a copy of Page B from cache and displays Page B to the user. As illustrated by a box  27 , client web browser  21  re-submits the form on Page B when a user again clicks the submit button within Page B. The first key is also sent back to web server  22  along with page B.  
         [0024]    Upon receiving resubmitted Page B, web server  22  looks up in web server state cache  29  the entry for the first key. The entry indicates to web server  22  that Page B has been received out of sequence and has already been accessed. This allows web server  22  to take an appropriate corrective action. For example, web server  22  sends back to client browser  21  an appropriate error page. Alternatively, web server  22  directs the user of client browser  21  back to page C. In this way the user receives predictable results.  
         [0025]    Using the web server state cache allows long, complicated forms to be broken up into many steps without excessive code complication. The web server state cache also permits complex state machines to be implemented without the complexity associated with storing state information on the client web browser. Also, using the web server state cache prevents unauthorized access to dynamic content. Server controls and the “state” of a session are no longer maintained in the client. The web server state cache permits pages to be generated only in the order allowed and maintained by web server state cache  29 . Requests cannot be simulated or decoded.  
         [0026]    [0026]FIG. 3 is a simplified flow chart that illustrates operation of web server  22  to track dialog state in web server state cache  29 . In a step  31 , web server  22  receives a communication from a client web browser. In a step  32 , web server  22  checks to see if a key is included. If in step  32  it is determined that a key is included, in a step  33 , web server  22  looks up the key in web server state cache  29 . In a step  34 , web server  22  checks the entry for the key in web server state cache  29  to see if the page was received in sequence. If in step  34  it is determined that the page was not received in sequence, in a step  35 , web server  22  takes corrective action.  
         [0027]    If in step  32  it is determined that a key is not included, a step  36  is performed. Also, if in step  34  it is determined that the page was received in sequence, step  36  is performed. In step  36  a response is generated to the client web browser. A new key is included in the response sent from the web server to the client web browser. In a step  37 , web server  22  updates web server state cache  29  with an entry for the new key.  
         [0028]    In a step  38 , the process for handling the communication is completed.  
         [0029]    The foregoing discussion discloses and describes merely exemplary methods and embodiments of the present invention. As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.