US20040103197A1 - Use of browser cookies to store structured data - Google Patents
Use of browser cookies to store structured data Download PDFInfo
- Publication number
- US20040103197A1 US20040103197A1 US10/694,509 US69450903A US2004103197A1 US 20040103197 A1 US20040103197 A1 US 20040103197A1 US 69450903 A US69450903 A US 69450903A US 2004103197 A1 US2004103197 A1 US 2004103197A1
- Authority
- US
- United States
- Prior art keywords
- data
- schema
- cookie
- cookies
- encoded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Definitions
- the present invention relates to Web site customization using cookies, and more particularly, to a method of extending the functionality of cookies to increase Web site performance.
- Web browsers such as Internet Explorer and Netscape Navigator support a mechanism by which a Web server can store persistent information on a user's machine for subsequent retrieval.
- This information is commonly referred to as a “cookie,” and typically includes information about the user's identity.
- the browser automatically sends the cookie (and any other cookies that correspond to the requested URL) to the host Web server with the URL request.
- Cookies One common application for cookies involves dynamically customizing Web pages and functions for known users of a Web site. Typically, this involves storing known information about the user, such as a user ID, on the user's computer in response to a page request. When the user subsequently accesses the Web site, the information contained within the cookie is used to access a back-end database to retrieve additional information about the user, such as the user's preferences or account information. This database information may then be used to customize the requested Web page.
- known information about the user such as a user ID
- the information contained within the cookie is used to access a back-end database to retrieve additional information about the user, such as the user's preferences or account information. This database information may then be used to customize the requested Web page.
- One potential solution to the above problem would be to store within cookies all of the user information needed to customize the Web pages, or at least the most frequently accessed Web pages. This would allow accesses to back-end databases during page requests to be reduced or avoided.
- the existing cookies specification does not provide a mechanism for storing non-character data.
- the database information used to customize Web pages includes a list or table of 16-bit integers
- storing such data within browser cookies is not a viable option.
- the existing cookies specification does not provide a mechanism for allowing server software to keep track of versions of data elements contained within cookies.
- the present invention overcomes this problem by providing a server system and process for storing selected data structures within browser cookies, preferably using a version tracking scheme to provide forward and backward compatibility between client and server software.
- the data structures may contain a variety of different types of data elements, including N-bit integers and other non-character elements.
- the process is implemented without the need for any browser extensions, and without the need for users to download any special code to their computers.
- the system uses a schema file or other data structure that specifies past and present schemas for encoding data structures within cookies.
- a first server component uses the schema file to encode data structures into character strings that are stored within cookies on user computers.
- a checksum value, a length field, and a schema version number are also preferably encoded within the cookies.
- a second server component receives cookies from user computers, uses the schema file to identify the types of data structures stored in such cookies, and reproduces the data structures in local memory for temporary use.
- Application software uses these temporary data structures to generate personalized web pages and/or perform other custom operations.
- FIG. 1 illustrates a Web site system according to a preferred embodiment of the invention.
- FIG. 2 illustrates a preferred sequence of steps that are implemented by the host-to-cookie module of FIG. 1 to translate a sequence of structures to a cookie format.
- FIG. 3 illustrates a preferred sequence of steps that are implemented by the cookie-to-host conversion module of FIG. 1 to convert a character string back to the original host representation.
- FIGS. 1 - 3 A preferred embodiment of the process and associated components will now be described with reference to FIGS. 1 - 3 .
- FIG. 1 illustrates a Web site system (“Web site”) 30 according to a preferred embodiment of the invention, and illustrates a representative user computer 32 that communicates with the Web site via the Internet.
- Web site 30 is the Amazom.com Web site.
- the user computer includes a Web browser 34 , such as Microsoft Internet Explorer 4.0, that supports cookies.
- the Web site 30 includes a Web server 36 which accesses a store 38 of HTML (Hypertext Markup Language) documents.
- the Web site also includes one or more applications 40 that are used to dynamically generate customized Web pages for users.
- the Web server 36 and the applications 40 may, for example, run on one or more physical servers of the Web site.
- the applications 40 access one or more databases or other repositories 44 (collectively “user database”) that contain information about known users of the site.
- this information may include, for example, user names and identifiers, payment and shipping information, shopping preference information (e.g., 1-Click settings), shopping cart contents, group discount information, product recommendations, user purchase histories, and service data (e.g., BookMatcher ratings).
- shopping preference information e.g., 1-Click settings
- shopping cart contents e.g., group discount information
- product recommendations e.g., user purchase histories
- service data e.g., BookMatcher ratings
- the information stored in the user database 44 for each user is in the form of multiple structures, STRUCT — 1 through STRUCT_N.
- the structures may include, for example, lists, tables, arrays, variables, records, and other types of elements.
- Each structure includes one or more primitives, where a primitive is a data element that does not include a reference to another data element. For purposes of illustration, it may be assumed that some of these primitives are in the form of non-character elements (such as 16-bit and 32-bit integers) that are used to customize frequently-accessed Web pages.
- the following additional components are provided to reduce the need for accesses to the user database 44 .
- These components include a host representation to cookie conversion module 50 A (“host-to-cookie module”), a cookie to host representation conversion module 50 B (“cookie-to-host module”), and a schema file 52 .
- the conversion modules 50 A, 50 B may be in the form of executable functions that can be called by the applications.
- the schema file 52 which may alternatively be in the form of a table or other data structure, specifies the user database structures that have been selected (typically by application developers) to be included within cookies.
- the structures that are included are those which contain relatively static user data that is used to customize frequently-accessed Web pages.
- information about structures that are no longer in use is retained within the schema file to support backward and forward compatibility.
- the schema file 52 thus acts as a specification of past and present schemas used to generate cookies.
- the schema file 52 is preferably stored in local storage 56 of the physical server(s) that run the applications 40 .
- the schema file 52 may be stored on the hard drive of each such server, and may be cached in the server's RAM to increase performance.
- the conversion modules 50 A, 50 B perform the task of converting selected structures of the user database 44 (preferably those used for the customization of popular Web pages) between the host representation and a cookie representation.
- the host-to-cookie conversion module 50 A is invoked to convert selected database structures for a particular user into a cookie to be stored on the user's computer; during this process, the schema file 52 is accessed to determine which of the specific structures (or primitives thereof) are to be included within the cookie.
- the cookie-to-host module 50 B is invoked to convert the cookie back to the host representation used by the applications 40 .
- the schema file 52 is used to determine the content and format of the embedded structure data.
- the schema file 52 is used to determine whether any of the structures contained within the cookie is no longer valid; if any such structure exists, it need not be fully decoded.
- the structures that are extracted from the cookie are stored in local storage 56 while they are used by the applications 44 , and are then deleted.
- the extracted information is used to customize one or more Web pages, but the information could also or alternatively be used to perform other types of user-specific functions (e.g., authentication).
- the schema file 52 includes a global schema version number 58 (SCHEMA_VER) which, as described below, is incremented when certain types of changes are made to the schema.
- the schema file 52 also includes a sequence of structure entries 60 , each of which corresponds to a particular database structure that has been selected for inclusion.
- Each entry 60 includes a structure definition portion 60 A and a valid version range portion 60 B.
- the structure definition portion 60 A contains the metadata for the corresponding structure, including a list of the primitive fields of the structure and their datatypes and address offsets.
- the valid version range 60 B specifies the range of schema version numbers for which the corresponding structure is valid, and consists of an upper bound and a lower bound. Since the deletion of a structure is rarely planned in advance, the upper bound of the valid version range 60 B for a structure is preferably set to be unlimited. As discussed below, a structure can be retired by incrementing the global schema version number 58 and setting the upper bound of the valid version range 60 B of the structure to be less than the new global version number.
- the schema file 52 is modified according to the following set of rules.
- a new structure can be added to the schema by adding a new entry 60 to the sequence and incrementing the global schema version number.
- the upper bound of the structure's version range 60 B is set to the current global version number 58 , and all deployed application software is updated to reflect this change. The global version number 58 is then incremented.
- FIG. 2 illustrates a preferred sequence of steps that are implemented by the host-to-cookie module 50 A to translate the sequence of structures to a cookie format. All but the final step 90 of this process can optionally be performed in an off-line mode, rather than in response to a URL request, to reduce the delay experienced by the user.
- the first step 78 of the process involves accessing the schema file 52 to identify the structures to be included within the cookie. This involves identifying the structures listed in the schema file 52 that are currently valid (i.e., have a valid version number range 60 B which includes the global schema version number 58 ).
- each valid structure is read from the user database 44 , and the primitive elements of the structure are sequentially written in their network byte order.
- Conventional NTOHL and HTONL families of functions may be used for this purpose.
- Putting the primitives in network byte order allows machines having different endian architectures to be used for generating and decoding cookies.
- the result of step 80 is a variable-length sequence of bytes which represents the primitive elements of the valid structures.
- step 82 a checksum is computed for the resulting sequence of bytes.
- a 32-bit checksum may be used for this purpose.
- the checksum provides a mechanism for later determining whether the cookie has been modified.
- the checksum, global version number 58 , and the length of the sequence are then prepended or otherwise attached to the byte sequence (step 84 ), with these values being again written in network byte order.
- step 86 the resulting sequence is encrypted using a standard encryption library (not shown).
- the resulting, encrypted byte sequence is then translated into a character string. This is preferably accomplished by dividing the sequence of bytes into a sequence of six-bit values (padding the sequence as needed to provide even divisibility), and converting each six-bit value into a base-64 digit.
- the character set used for this purpose consists of the numbers 0-9, all upper-case and lower-case alphabetical characters, and the characters “@” and “?.” Any of a variety of other character sets and conversion schemes could be used for this purpose.
- step 90 the resulting character string is written to the corresponding user's computer 32 as the value portion of a cookie.
- the cookie is written by including a Set-Cookie header within an HTTP response to the browser 34 .
- the user's structures that are written to the cookie are preferably retained within the user database 44 , but could alternatively be deleted to reduce server storage burden.
- the cookie-to-host conversion module 50 B applies the above steps in reverse order to convert the character string back to the original host representation.
- the first step 100 of this process involves decoding the character string to reproduce the encrypted byte sequence.
- the encrypted byte sequence is then decrypted (step 102 ) using the same encryption library and key used for encryption. At this point, the length, version number, checksum and data are available in network byte order.
- step 104 a checksum is then computed for the extracted data portion, and this checksum is compared to the extracted checksum to determine whether the cookie value was modified. If a mismatch occurs, the cookie is ignored (steps 106 and 108 ); in this event, the user database 44 may be accessed to retrieve the desired user data.
- the schema used to generate each cookie could alternatively be incorporated into that cookie. Doing so, however, increases the cookie size, and can decrease performance.
- the above-described approach of keeping track of the current and past schemas in a schema file or other server data structure is therefor preferred. It will also be recognized that the information stored within the schema file 52 could be distributed across multiple different files or data structures and/or represented in a different form.
Abstract
A web site system implements a process for storing selected data structures within browser cookies. The data structures may contain a variety of different types of data elements, including N-bit integers and other non-character elements. A version tracking scheme provides forward and backward compatibility between client and server software. The process is implemented without the need for any browser extensions, and without the need for users to download any special code to their computers.
Description
- This application is a continuation of U.S. patent application Ser. No. 09/494,712, filed Jan. 31, 2000, which claims the benefit of U.S. provisional application No. 60/118,266, filed Feb. 2, 1999.
- The present invention relates to Web site customization using cookies, and more particularly, to a method of extending the functionality of cookies to increase Web site performance.
- Commercially available Web browsers such as Internet Explorer and Netscape Navigator support a mechanism by which a Web server can store persistent information on a user's machine for subsequent retrieval. This information is commonly referred to as a “cookie,” and typically includes information about the user's identity. The cookie is stored on the user's computer as a name-value pair (NAME=VALUE), together with a URL (or range of URLs) to which the cookie corresponds and an optional expiration date. When the user initiates a request for a URL that corresponds to the cookie, the browser automatically sends the cookie (and any other cookies that correspond to the requested URL) to the host Web server with the URL request.
- One common application for cookies involves dynamically customizing Web pages and functions for known users of a Web site. Typically, this involves storing known information about the user, such as a user ID, on the user's computer in response to a page request. When the user subsequently accesses the Web site, the information contained within the cookie is used to access a back-end database to retrieve additional information about the user, such as the user's preferences or account information. This database information may then be used to customize the requested Web page.
- One problem with the above approach is that it requires frequent accesses to the database. For Web sites that experience many thousands of hits per day, the need to access the database can produce a significant performance degradation. The performance degradation may be the result of a limited load capacity of the database system, increased network traffic between physical Web servers and the database system, or both.
- One potential solution to the above problem would be to store within cookies all of the user information needed to customize the Web pages, or at least the most frequently accessed Web pages. This would allow accesses to back-end databases during page requests to be reduced or avoided. Unfortunately, the existing cookies specification does not provide a mechanism for storing non-character data. Thus, for example, where the database information used to customize Web pages includes a list or table of 16-bit integers, storing such data within browser cookies is not a viable option. Further, the existing cookies specification does not provide a mechanism for allowing server software to keep track of versions of data elements contained within cookies.
- The present invention overcomes this problem by providing a server system and process for storing selected data structures within browser cookies, preferably using a version tracking scheme to provide forward and backward compatibility between client and server software. The data structures may contain a variety of different types of data elements, including N-bit integers and other non-character elements. The process is implemented without the need for any browser extensions, and without the need for users to download any special code to their computers.
- In a preferred embodiment, the system uses a schema file or other data structure that specifies past and present schemas for encoding data structures within cookies. A first server component uses the schema file to encode data structures into character strings that are stored within cookies on user computers. A checksum value, a length field, and a schema version number are also preferably encoded within the cookies. A second server component receives cookies from user computers, uses the schema file to identify the types of data structures stored in such cookies, and reproduces the data structures in local memory for temporary use. Application software uses these temporary data structures to generate personalized web pages and/or perform other custom operations.
- FIG. 1 illustrates a Web site system according to a preferred embodiment of the invention.
- FIG. 2 illustrates a preferred sequence of steps that are implemented by the host-to-cookie module of FIG. 1 to translate a sequence of structures to a cookie format.
- FIG. 3 illustrates a preferred sequence of steps that are implemented by the cookie-to-host conversion module of FIG. 1 to convert a character string back to the original host representation.
- A preferred embodiment of the process and associated components will now be described with reference to FIGS.1-3. Throughout these figures and the associated description, reference will be made to various implementation-specific details such as specific data types, algorithms, rules and conventions. These and other details are provided in order to illustrate an example implementation, and not to limit the scope of the invention.
- FIG. 1 illustrates a Web site system (“Web site”)30 according to a preferred embodiment of the invention, and illustrates a
representative user computer 32 that communicates with the Web site via the Internet. For purposes of illustration, it may be assumed that theWeb site 30 is the Amazom.com Web site. The user computer includes aWeb browser 34, such as Microsoft Internet Explorer 4.0, that supports cookies. - The
Web site 30 includes aWeb server 36 which accesses astore 38 of HTML (Hypertext Markup Language) documents. The Web site also includes one ormore applications 40 that are used to dynamically generate customized Web pages for users. TheWeb server 36 and theapplications 40 may, for example, run on one or more physical servers of the Web site. - As depicted by FIG. 1, the
applications 40 access one or more databases or other repositories 44 (collectively “user database”) that contain information about known users of the site. In the context of the Amazon.com site, this information may include, for example, user names and identifiers, payment and shipping information, shopping preference information (e.g., 1-Click settings), shopping cart contents, group discount information, product recommendations, user purchase histories, and service data (e.g., BookMatcher ratings). Different items within theuser database 44 may be used by theapplications 40 to customize different Web pages or functions. - The information stored in the
user database 44 for each user is in the form of multiple structures, STRUCT—1 through STRUCT_N. The structures may include, for example, lists, tables, arrays, variables, records, and other types of elements. Each structure includes one or more primitives, where a primitive is a data element that does not include a reference to another data element. For purposes of illustration, it may be assumed that some of these primitives are in the form of non-character elements (such as 16-bit and 32-bit integers) that are used to customize frequently-accessed Web pages. - Previously, the process of dynamically customizing Web pages for users has required the
applications 40 to frequently access theuser database 44. For example, when a known user would request the site's home page, information contained within the cookie (or cookies) transmitted with the URL request would be used to look up in thedatabase 44 the user's name and certain preference information; this information would then be used to generate the home page. As described above, such frequent accesses to back-end databases can significantly degrade performance as seen by end users. - In accordance with the invention, the following additional components are provided to reduce the need for accesses to the
user database 44. These components include a host representation tocookie conversion module 50A (“host-to-cookie module”), a cookie to hostrepresentation conversion module 50B (“cookie-to-host module”), and aschema file 52. Theconversion modules - The
schema file 52, which may alternatively be in the form of a table or other data structure, specifies the user database structures that have been selected (typically by application developers) to be included within cookies. (The term “schema,” as used herein, refers generally to the pattern or arrangement of a collection of data elements.) Typically, the structures that are included are those which contain relatively static user data that is used to customize frequently-accessed Web pages. As described below, information about structures that are no longer in use (due to application design changes) is retained within the schema file to support backward and forward compatibility. Theschema file 52 thus acts as a specification of past and present schemas used to generate cookies. - The
schema file 52 is preferably stored inlocal storage 56 of the physical server(s) that run theapplications 40. For example, where the applications are replicated across multiple physical servers, theschema file 52 may be stored on the hard drive of each such server, and may be cached in the server's RAM to increase performance. - In operation, the
conversion modules cookie conversion module 50A is invoked to convert selected database structures for a particular user into a cookie to be stored on the user's computer; during this process, theschema file 52 is accessed to determine which of the specific structures (or primitives thereof) are to be included within the cookie. - When the cookie is subsequently returned with a URL request, the cookie-to-
host module 50B is invoked to convert the cookie back to the host representation used by theapplications 40. During the decoding process, theschema file 52 is used to determine the content and format of the embedded structure data. In addition, theschema file 52 is used to determine whether any of the structures contained within the cookie is no longer valid; if any such structure exists, it need not be fully decoded. The structures that are extracted from the cookie are stored inlocal storage 56 while they are used by theapplications 44, and are then deleted. Typically, the extracted information is used to customize one or more Web pages, but the information could also or alternatively be used to perform other types of user-specific functions (e.g., authentication). - In one implementation of the disclosed system, structures that use primitive datatypes of 8, 16, and 32 bit integers and null-terminated ASCII strings are supported. In other implementations of the disclosed design, more complex structures such as nested or cross-referenced structures could be stored.
- The content of the
schema file 52 will now be described in further detail with reference to FIG. 1. As illustrated, theschema file 52 includes a global schema version number 58 (SCHEMA_VER) which, as described below, is incremented when certain types of changes are made to the schema. Theschema file 52 also includes a sequence ofstructure entries 60, each of which corresponds to a particular database structure that has been selected for inclusion. Eachentry 60 includes astructure definition portion 60A and a validversion range portion 60B. Thestructure definition portion 60A contains the metadata for the corresponding structure, including a list of the primitive fields of the structure and their datatypes and address offsets. - The
valid version range 60B specifies the range of schema version numbers for which the corresponding structure is valid, and consists of an upper bound and a lower bound. Since the deletion of a structure is rarely planned in advance, the upper bound of thevalid version range 60B for a structure is preferably set to be unlimited. As discussed below, a structure can be retired by incrementing the globalschema version number 58 and setting the upper bound of thevalid version range 60B of the structure to be less than the new global version number. - To support the ability to read both old and new cookies, the
schema file 52 is modified according to the following set of rules. - 1. The set of data elements specified within a
structure definition 60A cannot be modified. - 2. No insertions into, or deletions from, the sequence of
structure entries 60 are permitted. - 3. A new structure can be added to the schema by adding a
new entry 60 to the sequence and incrementing the global schema version number. - 4. To retire a structure, the upper bound of the structure's
version range 60B is set to the currentglobal version number 58, and all deployed application software is updated to reflect this change. Theglobal version number 58 is then incremented. - These rules may be followed “by hand” by developer(s) during manual editing of the
schema file 52. Alternatively, a special management layer could be provided which enforces these rules. - FIG. 2 illustrates a preferred sequence of steps that are implemented by the host-to-
cookie module 50A to translate the sequence of structures to a cookie format. All but thefinal step 90 of this process can optionally be performed in an off-line mode, rather than in response to a URL request, to reduce the delay experienced by the user. - The
first step 78 of the process involves accessing theschema file 52 to identify the structures to be included within the cookie. This involves identifying the structures listed in theschema file 52 that are currently valid (i.e., have a validversion number range 60B which includes the global schema version number 58). - In
step 80, each valid structure is read from theuser database 44, and the primitive elements of the structure are sequentially written in their network byte order. Conventional NTOHL and HTONL families of functions may be used for this purpose. Putting the primitives in network byte order allows machines having different endian architectures to be used for generating and decoding cookies. The result ofstep 80 is a variable-length sequence of bytes which represents the primitive elements of the valid structures. - In
step 82, a checksum is computed for the resulting sequence of bytes. A 32-bit checksum may be used for this purpose. The checksum provides a mechanism for later determining whether the cookie has been modified. The checksum,global version number 58, and the length of the sequence are then prepended or otherwise attached to the byte sequence (step 84), with these values being again written in network byte order. Instep 86, the resulting sequence is encrypted using a standard encryption library (not shown). - As indicated by
step 88, the resulting, encrypted byte sequence is then translated into a character string. This is preferably accomplished by dividing the sequence of bytes into a sequence of six-bit values (padding the sequence as needed to provide even divisibility), and converting each six-bit value into a base-64 digit. The character set used for this purpose consists of the numbers 0-9, all upper-case and lower-case alphabetical characters, and the characters “@” and “?.” Any of a variety of other character sets and conversion schemes could be used for this purpose. - Finally, in
step 90, the resulting character string is written to the corresponding user'scomputer 32 as the value portion of a cookie. As is conventional, the cookie is written by including a Set-Cookie header within an HTTP response to thebrowser 34. The user's structures that are written to the cookie are preferably retained within theuser database 44, but could alternatively be deleted to reduce server storage burden. - When the cookie is subsequently transmitted to the
Web server 36 as part of a URL request, the cookie-to-host conversion module 50B applies the above steps in reverse order to convert the character string back to the original host representation. As depicted by FIG. 3, thefirst step 100 of this process involves decoding the character string to reproduce the encrypted byte sequence. The encrypted byte sequence is then decrypted (step 102) using the same encryption library and key used for encryption. At this point, the length, version number, checksum and data are available in network byte order. - As represented by
step 104, a checksum is then computed for the extracted data portion, and this checksum is compared to the extracted checksum to determine whether the cookie value was modified. If a mismatch occurs, the cookie is ignored (steps 106 and 108); in this event, theuser database 44 may be accessed to retrieve the desired user data. - Otherwise, the structures are “inflated” to their host representation according to the information contained within the schema file, and are written to local storage56 (
steps 110 and 112) for use by the applications. During this process, the version number contained within the cookie is compared to the valid version ranges 60B of the schema file 52 (step 110). If the version number is within or exceeds the valid range of aschema entry 60, that structure is inflated from the byte structure; otherwise, there is no data stored within the cookie for that structure, and the structure is skipped and marked as uninitialized (step 112). - The above scheme allows values stored in old versions of cookies to be read by new versions of application software. If the cookie predates the addition of a structure to the end of the schema sequence, that structure is simply marked as uninitialized so that it can be treated as such by the new application software. If a structure has been deactivated (retired), the data from an old cookie will still be read but may then be ignored by the new application software. Further, cookies associated with new versions of application software can be read by old versions of the software.
- As will be appreciated by the foregoing, the schema used to generate each cookie could alternatively be incorporated into that cookie. Doing so, however, increases the cookie size, and can decrease performance. The above-described approach of keeping track of the current and past schemas in a schema file or other server data structure is therefor preferred. It will also be recognized that the information stored within the
schema file 52 could be distributed across multiple different files or data structures and/or represented in a different form. - Although this invention has been described in terms of certain preferred embodiments, other embodiments that are apparent to those or ordinary skill in the art are also within the scope of this invention.
Claims (42)
1. A system for servicing web page requests, the system comprising a server that responds to user requests for web pages, said server comprising a memory;
schema data stored in the memory of the server, said schema data specifying past and present schemas used to encode data structures into cookies stored on user computers;
a conversion component executed by the server, said conversion component configured to use the schema data to identify and decode the data structures encoded within cookies received from user computers to generate temporary data structures within the memory of the server; and
application code executed by the server, said application code configured to use the temporary data structures to customize web pages requested by the user computers.
2. The system of claim 1; wherein the conversion component is not specific to a particular type of data structure.
3. The system of claim 1 , wherein the conversion component supports a plurality of different types of data structures.
4. The system of claim 1 , wherein the schema data specifies the content and format of each of a plurality of data structures that are encoded within the cookies.
5. The system of claim 1 , wherein the schema data includes, for a given data structure that is encoded within cookies, an identification of primitive fields of the given data structure and datatypes of said primitive fields.
6. The system of claim 5 , wherein the schema data further includes address offsets of the primitive fields.
7. The system of claim 1 , wherein the schema data includes, for a given data structure that is encoded within cookies, an indication of a range of schema versions for which the data structure is valid, wherein the conversion component uses said range to determine whether a particular data structure encoded within a cookie is valid.
8. The system of claim 1 , wherein the schema data includes information about at least one data structure that is no longer in use.
9. The system of claim 1 , wherein the conversion component uses the schema data to determine which of a set of the data structures encoded within a received cookie are to be decoded for use.
10. The system of claim 1 , wherein the conversion component uses the schema data to determine whether a particular data structure that is encoded within a received cookie is to be decoded for use.
11. The system of claim 1 , wherein the conversion component is an executable function that is called by the application code.
12. The system of claim 1 , wherein the schema data is cached with random access memory of the server.
13. The system of claim 1 , wherein the schema data is stored within a file in the memory of the server.
14. The system of claim 1 , wherein the schema data is stored within a table in the memory of the server.
15. The system of claim 1 , wherein the conversion component uses a checksum included within a received cookie to evaluate whether the cookie has been modified.
16. The system of claim 1 , wherein the conversion component applies a decryption algorithm to encrypted information contained in the cookies received from the user computers.
17. The system of claim 1 , further comprising an encoding component that encodes data structures into cookies according to a current schema specified by the schema data.
18. A method of extracting information from cookies, the method comprising
(a) receiving, at a server, cookie data that has a data structure encoded therein, said cookie data received from a user computer;
(b) determining whether the data structure encoded within the cookie data is valid; and
(c) if and only if the data structure encoded within the cookie data is determined to be valid in step (b), decoding the encoded data structure to reproduce the data structure within a memory of the server.
19. The method of claim 18 , wherein the validity of the data structure as determined in step (b) reflects whether the data structure is currently used by any applications running on the server.
20. The method of claim 18 , wherein step (b) comprises identifying a version of a schema used to encode the data structure within the cookie data.
21. The method of claim 18 , wherein step (b) comprises using schema data stored within the memory of the server to determine whether the data structure is valid.
22. The method of claim 18 , wherein a plurality of data structures are encoded within the cookie data, and the method comprises determining which of the plurality of data structures should be fully decoded.
23. The method of claim 18 , further comprising using the data structure as reproduced in step (c) to customize a web page requested by the user computer.
24. The method of claim 18 , wherein step (c) is performed by executable code that is not specific to a particular type of data structure.
25. The method of claim 18 , wherein the data structure includes primitives of at least one of the following data types: 16-bit integers, 32-bit integers.
26. A server system that performs the method of claim 18 .
27. A computer program that embodies the method of claim 18 stored within a computer readable medium.
28. A method of generating cookie data for storage on a computer of a user, the method comprising:
identifying a set of data structures to be encoded within the cookie data;
encoding the set of data structures within the cookie data according to schema data stored within a computer memory, said schema data specifying how the set of data structures is to be encoded within the cookie data; and
incorporating into the cookie data at least one of the following to facilitate extraction of the set of data structures from the cookie data: (a) a schema identifier, (b) the schema data.
29. The method of claim 28 , wherein the method comprises incorporating the schema data into the cookie data.
30. The method of claim 28 , wherein the method comprises incorporating a schema identifier into the cookie data, said schema identifier identifying one of a plurality of schemas used over a period of time to encode data structures within cookie data.
31. The method of claim 28 , wherein the set of data structures is encoded within the cookie data using executable code that is not specific to a particular type of data structure.
32. The method of claim 28 , wherein the set of data structures includes noncharacter. primitives.
33. The method of claim 28 ,.wherein the set of data structures includes primitives of at least one of the following data types 16-bit integers, 32-bit integers.
34. The method of claim 28 , further comprising incorporating a checksum into the cookie data to permit subsequent detection of whether the cookie data has been modified.
35. The method of claim 28 , wherein the method is performed in an off-line mode to reduce a delay experienced by a user.
36. A computer-readable medium comprising cookie data generated according to the method of claim 28 .
37. A computer system configured to perform the method of claim 28 .
38. A computer-readable medium that stores a computer program embodying the method of claim 28 .
39. A method for using browser cookies to store structured data, the method comprising:
storing schema data on at least one server computer of a web site system, said schema data specifying schemas used by executable software to (a) encode data structures within cookies for storage on user computers, and (b) decode said cookies to extract the data structures when the cookies are returned by the user computers; and
modifying the schema data over time to add data structures to, and remove data structures from, a set of data structures encoded within cookies by the executable software.
40. The method of claim 39 , wherein the schema data is modified according to a set of rules to enable the executable software to decode cookies encoded using both past and present schemas.
41. The method of claim 40 , wherein the rules are enforced by a management layer.
42. The method of claim 39 , wherein the executable software is not specific to a particular type of data structure.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/694,509 US20040103197A1 (en) | 1999-02-02 | 2003-10-27 | Use of browser cookies to store structured data |
US12/127,599 US7660816B2 (en) | 1999-02-02 | 2008-05-27 | Use of browser cookies to store structured data |
US12/500,496 US7747649B2 (en) | 1999-02-02 | 2009-07-09 | Use of browser cookies to store structured data |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11826699P | 1999-02-02 | 1999-02-02 | |
US09/494,712 US6714926B1 (en) | 1999-02-02 | 2000-01-31 | Use of browser cookies to store structured data |
US10/694,509 US20040103197A1 (en) | 1999-02-02 | 2003-10-27 | Use of browser cookies to store structured data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/494,712 Continuation US6714926B1 (en) | 1999-02-02 | 2000-01-31 | Use of browser cookies to store structured data |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/127,599 Continuation US7660816B2 (en) | 1999-02-02 | 2008-05-27 | Use of browser cookies to store structured data |
Publications (1)
Publication Number | Publication Date |
---|---|
US20040103197A1 true US20040103197A1 (en) | 2004-05-27 |
Family
ID=31996523
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/494,712 Expired - Lifetime US6714926B1 (en) | 1999-02-02 | 2000-01-31 | Use of browser cookies to store structured data |
US10/694,509 Abandoned US20040103197A1 (en) | 1999-02-02 | 2003-10-27 | Use of browser cookies to store structured data |
US12/127,599 Expired - Fee Related US7660816B2 (en) | 1999-02-02 | 2008-05-27 | Use of browser cookies to store structured data |
US12/500,496 Expired - Fee Related US7747649B2 (en) | 1999-02-02 | 2009-07-09 | Use of browser cookies to store structured data |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/494,712 Expired - Lifetime US6714926B1 (en) | 1999-02-02 | 2000-01-31 | Use of browser cookies to store structured data |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/127,599 Expired - Fee Related US7660816B2 (en) | 1999-02-02 | 2008-05-27 | Use of browser cookies to store structured data |
US12/500,496 Expired - Fee Related US7747649B2 (en) | 1999-02-02 | 2009-07-09 | Use of browser cookies to store structured data |
Country Status (1)
Country | Link |
---|---|
US (4) | US6714926B1 (en) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050257210A1 (en) * | 2004-05-11 | 2005-11-17 | Frank Stienhans | Upgrading pattern configurations |
US20060143147A1 (en) * | 2004-12-28 | 2006-06-29 | Pearson Joseph A | Systems and methods for client-side cached representation of database-persisted information |
US20070106670A1 (en) * | 2005-11-08 | 2007-05-10 | Nortel Networks Limited | Interactive communication session cookies |
US20080270527A1 (en) * | 2007-04-26 | 2008-10-30 | Microsoft Corporation | Extended browser data storage |
US8756326B1 (en) | 2005-11-08 | 2014-06-17 | Rockstar Consortium Us Lp | Using interactive communication session cookies in web sessions |
EP2745491A4 (en) * | 2011-09-02 | 2015-09-02 | Nokia Technologies Oy | Method and apparatus for enabling offline web application execution |
US20160379298A1 (en) * | 2014-03-31 | 2016-12-29 | Monticello Enterprises, Llc | System and method for transitioning from a first site to a second site |
US9922381B2 (en) | 2014-03-31 | 2018-03-20 | Monticello Enterprises LLC | System and method for providing a payment handler API and a browser payment request API for processing a payment |
US10121186B2 (en) | 2014-03-31 | 2018-11-06 | Monticello Enterprises LLC | System and method of using a browser application programming interface for making payments |
US10152756B2 (en) | 2014-03-31 | 2018-12-11 | Monticello Enterprises LLC | System and method for providing multiple payment method options to browser |
US10497037B2 (en) | 2014-03-31 | 2019-12-03 | Monticello Enterprises LLC | System and method for managing cryptocurrency payments via the payment request API |
US10511580B2 (en) | 2014-03-31 | 2019-12-17 | Monticello Enterprises LLC | System and method for providing a social media shopping experience |
US10621653B2 (en) | 2014-03-31 | 2020-04-14 | Monticello Enterprises LLC | System and method for providing payments for users in connection with a device software module having a payment application programming interface |
US10643266B2 (en) | 2014-03-31 | 2020-05-05 | Monticello Enterprises LLC | System and method for in-app payments |
US10726472B2 (en) | 2014-03-31 | 2020-07-28 | Monticello Enterprises LLC | System and method for providing simplified in-store, product-based and rental payment processes |
US10832310B2 (en) | 2014-03-31 | 2020-11-10 | Monticello Enterprises LLC | System and method for providing a search entity-based payment process |
US11004139B2 (en) | 2014-03-31 | 2021-05-11 | Monticello Enterprises LLC | System and method for providing simplified in store purchases and in-app purchases using a use-interface-based payment API |
US11080777B2 (en) | 2014-03-31 | 2021-08-03 | Monticello Enterprises LLC | System and method for providing a social media shopping experience |
US11250493B2 (en) | 2014-03-31 | 2022-02-15 | Monticello Enterprises LLC | System and method for performing social media cryptocurrency transactions |
US11282131B2 (en) | 2014-03-31 | 2022-03-22 | Monticello Enterprises LLC | User device enabling access to payment information in response to user input |
US11915303B2 (en) | 2014-03-31 | 2024-02-27 | Monticello Enterprises LLC | System and method for providing a social media shopping experience |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6772139B1 (en) * | 1998-10-05 | 2004-08-03 | Smith, Iii Julius O. | Method and apparatus for facilitating use of hypertext links on the world wide web |
US6714926B1 (en) * | 1999-02-02 | 2004-03-30 | Amazon.Com, Inc. | Use of browser cookies to store structured data |
US6865574B1 (en) * | 2000-06-02 | 2005-03-08 | Vignette Corporation | Method for client-side personalization |
KR100425494B1 (en) * | 2000-08-21 | 2004-03-30 | 엘지전자 주식회사 | A method of management data synchronization for web based data transmission equipment |
US20020073197A1 (en) * | 2000-12-11 | 2002-06-13 | Ibm Corporation | Method and apparatus for customizing performance of a browser for a given network connection |
EP1221687A3 (en) * | 2000-12-27 | 2007-05-30 | Dainippon Ink And Chemicals, Inc. | Color-designating system |
DE10250641A1 (en) * | 2002-10-30 | 2004-05-13 | Siemens Ag | Upward and downward compatible schema evolution |
JP4455170B2 (en) * | 2004-05-31 | 2010-04-21 | 株式会社東芝 | Network home appliance control system |
JP4648455B2 (en) * | 2005-05-06 | 2011-03-09 | エヌエイチエヌ コーポレーション | Personalized search method and personalized search system |
US20070106593A1 (en) * | 2005-11-07 | 2007-05-10 | Grant Lin | Adaptive stochastic transaction system |
US8799302B2 (en) * | 2005-12-29 | 2014-08-05 | Google Inc. | Recommended alerts |
US7499943B2 (en) * | 2006-01-09 | 2009-03-03 | International Business Machines Corporation | Mapping for mapping source and target objects |
US7792703B1 (en) | 2006-02-22 | 2010-09-07 | Qurio Holdings, Inc. | Methods, systems, and computer readable medium for generating wish lists |
US7643666B2 (en) * | 2006-08-08 | 2010-01-05 | Asml Netherlands B.V. | Method and apparatus for angular-resolved spectroscopic lithography characterization |
US20090089811A1 (en) * | 2007-09-27 | 2009-04-02 | Andrew Rodney Ferlitsch | Persistent per URL print settings |
US8887039B2 (en) * | 2008-01-02 | 2014-11-11 | Microsoft Corporation | Web page based program versioning |
US8055587B2 (en) * | 2008-06-03 | 2011-11-08 | International Business Machines Corporation | Man in the middle computer technique |
US8356345B2 (en) * | 2008-06-03 | 2013-01-15 | International Business Machines Corporation | Constructing a secure internet transaction |
CN102043783A (en) * | 2009-10-16 | 2011-05-04 | 阿里巴巴集团控股有限公司 | Data updating method, device and system |
US9922331B2 (en) * | 2009-11-04 | 2018-03-20 | Blue Kai, Inc. | Filter for user information based on enablement of persistent identification |
US9767475B2 (en) * | 2010-08-20 | 2017-09-19 | Blue Kai, Inc. | Real time audience forecasting |
US10096046B2 (en) * | 2011-04-14 | 2018-10-09 | Garrett Wade Mathews | Web-based user support system and method |
US9934310B2 (en) * | 2012-01-18 | 2018-04-03 | International Business Machines Corporation | Determining repeat website users via browser uniqueness tracking |
JP5573860B2 (en) * | 2012-02-15 | 2014-08-20 | コニカミノルタ株式会社 | Image forming system, image forming apparatus, and program |
WO2014022272A1 (en) * | 2012-07-30 | 2014-02-06 | Yahoo! Inc. | Systems and methods for implementing a mobil application based online advertising system |
US9210222B2 (en) | 2013-03-13 | 2015-12-08 | Adobe Systems Incorporated | Browser cookie analysis and targeted content delivery |
US9805392B2 (en) * | 2014-07-02 | 2017-10-31 | Oracle International Corporation | Simulating online user activity to generate an advertising campaign target audience list |
US10223294B2 (en) * | 2015-09-01 | 2019-03-05 | Nxp Usa, Inc. | Fast secure boot from embedded flash memory |
US10503834B2 (en) * | 2017-11-17 | 2019-12-10 | Digital Genius Limited | Template generation for a conversational agent |
US10515155B2 (en) | 2018-02-09 | 2019-12-24 | Digital Genius Limited | Conversational agent |
US10664266B2 (en) * | 2018-09-04 | 2020-05-26 | Salesforce.Com, Inc. | Maintaining client version affinity during a server cluster upgrade |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5907847A (en) * | 1996-09-26 | 1999-05-25 | Sun Microsystems, Inc. | Method and apparatus for coupling object state and behavior in a database management system |
US5960200A (en) * | 1996-05-03 | 1999-09-28 | I-Cube | System to transition an enterprise to a distributed infrastructure |
US5978840A (en) * | 1996-09-26 | 1999-11-02 | Verifone, Inc. | System, method and article of manufacture for a payment gateway system architecture for processing encrypted payment transactions utilizing a multichannel, extensible, flexible architecture |
US5991878A (en) * | 1997-09-08 | 1999-11-23 | Fmr Corp. | Controlling access to information |
US6041309A (en) * | 1998-09-25 | 2000-03-21 | Oneclip.Com, Incorporated | Method of and system for distributing and redeeming electronic coupons |
US6073241A (en) * | 1996-08-29 | 2000-06-06 | C/Net, Inc. | Apparatus and method for tracking world wide web browser requests across distinct domains using persistent client-side state |
US6076069A (en) * | 1998-09-25 | 2000-06-13 | Oneclip.Com, Incorporated | Method of and system for distributing and redeeming electronic coupons |
US6249795B1 (en) * | 1995-10-27 | 2001-06-19 | At&T Corp. | Personalizing the display of changes to records in an on-line repository |
US6330566B1 (en) * | 1998-06-22 | 2001-12-11 | Microsoft Corporation | Apparatus and method for optimizing client-state data storage |
US6374359B1 (en) * | 1998-11-19 | 2002-04-16 | International Business Machines Corporation | Dynamic use and validation of HTTP cookies for authentication |
US6714926B1 (en) * | 1999-02-02 | 2004-03-30 | Amazon.Com, Inc. | Use of browser cookies to store structured data |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774670A (en) | 1995-10-06 | 1998-06-30 | Netscape Communications Corporation | Persistent client state in a hypertext transfer protocol based client-server system |
JPH09233066A (en) * | 1996-02-23 | 1997-09-05 | Sony Corp | Encryption/decryption method and its device |
US5848396A (en) | 1996-04-26 | 1998-12-08 | Freedom Of Information, Inc. | Method and apparatus for determining behavioral profile of a computer user |
JPH10108148A (en) * | 1996-09-27 | 1998-04-24 | Sony Corp | Method for protecting copyright of digital data and protection system |
US6085224A (en) * | 1997-03-11 | 2000-07-04 | Intracept, Inc. | Method and system for responding to hidden data and programs in a datastream |
US5907848A (en) * | 1997-03-14 | 1999-05-25 | Lakeview Technology, Inc. | Method and system for defining transactions from a database log |
JP3368883B2 (en) * | 2000-02-04 | 2003-01-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Data compression device, database system, data communication system, data compression method, storage medium, and program transmission device |
US7528744B2 (en) * | 2007-08-24 | 2009-05-05 | Intelligent Design Systems, Inc. | Data encoder system |
US8286133B2 (en) * | 2007-12-19 | 2012-10-09 | Microsoft Corporation | Fuzzing encoded data |
-
2000
- 2000-01-31 US US09/494,712 patent/US6714926B1/en not_active Expired - Lifetime
-
2003
- 2003-10-27 US US10/694,509 patent/US20040103197A1/en not_active Abandoned
-
2008
- 2008-05-27 US US12/127,599 patent/US7660816B2/en not_active Expired - Fee Related
-
2009
- 2009-07-09 US US12/500,496 patent/US7747649B2/en not_active Expired - Fee Related
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6249795B1 (en) * | 1995-10-27 | 2001-06-19 | At&T Corp. | Personalizing the display of changes to records in an on-line repository |
US5960200A (en) * | 1996-05-03 | 1999-09-28 | I-Cube | System to transition an enterprise to a distributed infrastructure |
US6073241A (en) * | 1996-08-29 | 2000-06-06 | C/Net, Inc. | Apparatus and method for tracking world wide web browser requests across distinct domains using persistent client-side state |
US5907847A (en) * | 1996-09-26 | 1999-05-25 | Sun Microsystems, Inc. | Method and apparatus for coupling object state and behavior in a database management system |
US5978840A (en) * | 1996-09-26 | 1999-11-02 | Verifone, Inc. | System, method and article of manufacture for a payment gateway system architecture for processing encrypted payment transactions utilizing a multichannel, extensible, flexible architecture |
US5991878A (en) * | 1997-09-08 | 1999-11-23 | Fmr Corp. | Controlling access to information |
US6330566B1 (en) * | 1998-06-22 | 2001-12-11 | Microsoft Corporation | Apparatus and method for optimizing client-state data storage |
US6041309A (en) * | 1998-09-25 | 2000-03-21 | Oneclip.Com, Incorporated | Method of and system for distributing and redeeming electronic coupons |
US6076069A (en) * | 1998-09-25 | 2000-06-13 | Oneclip.Com, Incorporated | Method of and system for distributing and redeeming electronic coupons |
US6374359B1 (en) * | 1998-11-19 | 2002-04-16 | International Business Machines Corporation | Dynamic use and validation of HTTP cookies for authentication |
US6714926B1 (en) * | 1999-02-02 | 2004-03-30 | Amazon.Com, Inc. | Use of browser cookies to store structured data |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050257210A1 (en) * | 2004-05-11 | 2005-11-17 | Frank Stienhans | Upgrading pattern configurations |
US7761865B2 (en) * | 2004-05-11 | 2010-07-20 | Sap Ag | Upgrading pattern configurations |
US20060143147A1 (en) * | 2004-12-28 | 2006-06-29 | Pearson Joseph A | Systems and methods for client-side cached representation of database-persisted information |
US20070106670A1 (en) * | 2005-11-08 | 2007-05-10 | Nortel Networks Limited | Interactive communication session cookies |
US8756326B1 (en) | 2005-11-08 | 2014-06-17 | Rockstar Consortium Us Lp | Using interactive communication session cookies in web sessions |
US20080270527A1 (en) * | 2007-04-26 | 2008-10-30 | Microsoft Corporation | Extended browser data storage |
US8041778B2 (en) * | 2007-04-26 | 2011-10-18 | Microsoft Corporation | Extended browser data storage |
EP2745491A4 (en) * | 2011-09-02 | 2015-09-02 | Nokia Technologies Oy | Method and apparatus for enabling offline web application execution |
US10621653B2 (en) | 2014-03-31 | 2020-04-14 | Monticello Enterprises LLC | System and method for providing payments for users in connection with a device software module having a payment application programming interface |
US10769717B2 (en) | 2014-03-31 | 2020-09-08 | Monticello Enterprises LLC | System and method for providing data to a merchant device from a user device over a wireless link |
US9922381B2 (en) | 2014-03-31 | 2018-03-20 | Monticello Enterprises LLC | System and method for providing a payment handler API and a browser payment request API for processing a payment |
US9922380B2 (en) | 2014-03-31 | 2018-03-20 | Monticello Enterprises LLC | System and method for providing messenger application for product purchases |
US10002396B2 (en) * | 2014-03-31 | 2018-06-19 | Monticello Enterprises LLC | System and method for transitioning from a first site to a second site |
US10121186B2 (en) | 2014-03-31 | 2018-11-06 | Monticello Enterprises LLC | System and method of using a browser application programming interface for making payments |
US10152756B2 (en) | 2014-03-31 | 2018-12-11 | Monticello Enterprises LLC | System and method for providing multiple payment method options to browser |
US10497037B2 (en) | 2014-03-31 | 2019-12-03 | Monticello Enterprises LLC | System and method for managing cryptocurrency payments via the payment request API |
US10504193B2 (en) | 2014-03-31 | 2019-12-10 | Monticello Enterprises LLC | System and method for providing a universal shopping cart |
US10511580B2 (en) | 2014-03-31 | 2019-12-17 | Monticello Enterprises LLC | System and method for providing a social media shopping experience |
US20160379298A1 (en) * | 2014-03-31 | 2016-12-29 | Monticello Enterprises, Llc | System and method for transitioning from a first site to a second site |
US10643266B2 (en) | 2014-03-31 | 2020-05-05 | Monticello Enterprises LLC | System and method for in-app payments |
US10650441B1 (en) | 2014-03-31 | 2020-05-12 | Monticello Enterprises LLC | System and method for providing data to a merchant device from a user device over a wireless link using a single function action |
US10650443B2 (en) | 2014-03-31 | 2020-05-12 | Monticello Enterprises LLC | System and method for providing data to a merchant device from a user device over a wireless link |
US10726472B2 (en) | 2014-03-31 | 2020-07-28 | Monticello Enterprises LLC | System and method for providing simplified in-store, product-based and rental payment processes |
US9824408B2 (en) | 2014-03-31 | 2017-11-21 | Monticello Enterprises LLC | Browser payment request API |
US10825079B2 (en) | 2014-03-31 | 2020-11-03 | Monticello Enterprises LLC | System and method for providing data to a merchant device from a user device over a wireless link |
US10832310B2 (en) | 2014-03-31 | 2020-11-10 | Monticello Enterprises LLC | System and method for providing a search entity-based payment process |
US10977716B2 (en) | 2014-03-31 | 2021-04-13 | Monticello Enterprises LLC | System and method for providing multiple application programming interfaces for a browser to manage payments from a payment service |
US11004139B2 (en) | 2014-03-31 | 2021-05-11 | Monticello Enterprises LLC | System and method for providing simplified in store purchases and in-app purchases using a use-interface-based payment API |
US11074640B2 (en) | 2014-03-31 | 2021-07-27 | Monticello Enterprises LLC | System and method for providing a universal shopping cart across multiple search platforms |
US11080777B2 (en) | 2014-03-31 | 2021-08-03 | Monticello Enterprises LLC | System and method for providing a social media shopping experience |
US11244377B2 (en) | 2014-03-31 | 2022-02-08 | Monticello Enterprises LLC | System and method for providing a browser API for managing product purchases |
US11250493B2 (en) | 2014-03-31 | 2022-02-15 | Monticello Enterprises LLC | System and method for performing social media cryptocurrency transactions |
US11282131B2 (en) | 2014-03-31 | 2022-03-22 | Monticello Enterprises LLC | User device enabling access to payment information in response to user input |
US11461828B2 (en) | 2014-03-31 | 2022-10-04 | Monticello Enterprises LLC | System and method for receiving data at a merchant device from a user device over a wireless link |
US11468497B2 (en) | 2014-03-31 | 2022-10-11 | Monticello Enterprises LLC | System and method for receiving data at a merchant device from a user device over a wireless link |
US11669884B2 (en) | 2014-03-31 | 2023-06-06 | Monticello Enterprises LLC | System and method for providing data to a merchant device from a user device over a wireless link |
US11836784B2 (en) | 2014-03-31 | 2023-12-05 | Monticello Enterprises LLC | System and method for providing a search entity-based payment process |
US11842380B2 (en) | 2014-03-31 | 2023-12-12 | Monticello Enterprises LLC | System and method for providing a social media shopping experience |
US11915303B2 (en) | 2014-03-31 | 2024-02-27 | Monticello Enterprises LLC | System and method for providing a social media shopping experience |
Also Published As
Publication number | Publication date |
---|---|
US7747649B2 (en) | 2010-06-29 |
US20090271414A1 (en) | 2009-10-29 |
US20080228794A1 (en) | 2008-09-18 |
US6714926B1 (en) | 2004-03-30 |
US7660816B2 (en) | 2010-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6714926B1 (en) | Use of browser cookies to store structured data | |
US6345292B1 (en) | Web page rendering architecture | |
US8109441B2 (en) | System and method for encoding and decoding data and references to data in machine-readable graphical codes | |
US6564251B2 (en) | Scalable computing system for presenting customized aggregation of information | |
US6356906B1 (en) | Standard database queries within standard request-response protocols | |
CA2327078C (en) | Secure session management and authentication for web sites | |
JP3990115B2 (en) | Server-side proxy device and program | |
US7747782B2 (en) | System and method for providing and displaying information content | |
US7194506B1 (en) | Method and system for cache management of locale-sensitive content | |
KR100791430B1 (en) | Method and system for network caching | |
US9380022B2 (en) | System and method for managing content variations in a content deliver cache | |
US7363340B2 (en) | Method and system for generating auxiliary-server cache identifiers | |
US8214510B2 (en) | Maintaining state information on a client | |
US20020099798A1 (en) | File transfer method and system | |
US20010051927A1 (en) | Increasing web page browsing efficiency by periodically physically distributing memory media on which web page data are cached | |
US20020188435A1 (en) | Interface for submitting richly-formatted documents for remote processing | |
CN102043764A (en) | Reduced glyph font files | |
CN1414485A (en) | Contents conversion system, automatic pattern table selection method and its program | |
EP1402411A2 (en) | Content conditioning method and apparatus for internet devices | |
US6766313B1 (en) | System and method for caching and retrieving information | |
US20060242105A1 (en) | Pack URI scheme to identify and reference parts of a package | |
JPH11306194A (en) | Method for calculating hash value of character string and machine-readable recording medium where program for implementing same method is recorded | |
US6832225B1 (en) | Method and device for recording and searching for a document on a communication network | |
WO2001073561A1 (en) | Contents server device | |
Stallemo et al. | An evaluation of compression and streaming techniques for efficient transfer of XML documents with Simple Object Access Protocol (SOAP) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: AMAZON TECHNOLOGIES, INC., WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AMAZON.COM, INC.;REEL/FRAME:034742/0773 Effective date: 20150107 |