Abstract:
Methods, systems, computer-readable media, and apparatuses are presented for using cross-domain communication to allow manufacturers and other sellers to use cloud/Internet-based products catalog services without sacrificing the search-engine optimization benefit of catalog pages hosted within the manufacturer&#39;s domain. The Same Origin Policy used by many browsers may disallow direct communication to the manufacturer&#39;s domain for corporate web site and other functions, on the one hand, and an external domain for an efficiently hosted products catalog, on the other. Some embodiments present the use of the JSONP protocol for cross-domain retrieval of a Catalog Widget that is configured to retrieve product catalog information directly from the external domain. In these embodiments, search-engine optimization is furthered by the efficient production of numerous catalog pages that originate from the external domain yet appear to users and search engine crawlers to be within the manufacturer&#39;s domain.

Description:
CLAIM OF PRIORITY 
       [0001]    The present patent application claims priority under 35 U.S.C. §119 to U.S. Provisional Patent Application Ser. No. 61/623,227; filed Apr. 12, 2012; titled “USING CROSS-DOMAIN COMMUNICATION TO SERVE CLOUD-BASED PRODUCT CATALOG PAGES FROM A SELLER&#39;S DOMAIN.” The contents of U.S. Provisional Patent Application Ser. No. 61/623,227 are incorporated by reference herein. 
     
    
     BACKGROUND 
       [0002]    Almost since the Internet has come into being, businesses have been using it in an attempt to sell their merchandise. Using search engines, people (potential buyers) can enter queries that will cause those search engines to return, to those people, references to web pages that are relevant to those queries. The references returned typically will be ranked based upon some ranking algorithm used by the search engine. Such an algorithm can involve some measure of relevance (e.g., how many words of the query occurred within a web page, and/or a quantity of times that each such word occurred within the web page), but it may also involve a measure of a quantity of web pages that are known to be associated with a particular Internet domain. As used herein, an Internet domain comprises the last two parts (separated by a period) of a domain name in a Uniform Resource Identifier (URL), which comes before any single “/” characters in the URL. For example, in the URL “www.catalogdatasolutions.com,” the top-level domain is “.com” and the Internet domain is “catalogdatasolutions.com.” Many different web pages may be served by a web server that is owned and operated by the particular business to which this Internet domain is registered. Each of these web pages may have URLs that differ, but which are prefaced by the same identifier of this Internet domain. A subdomain of a web page also can be relevant. For example, “catalog.acme.com” is in a different subdomain than “www.acme.com.” The subdomain typically precedes the Internet domain in the URL. Some very well-known and popular search engines give great weighting, in their ranking algorithms, to the quantity of web pages that have URLs that are prefaced by the same Internet domain identifier and that are in the same subdomain. Thus, such search engines may place, most foremost in their list of search results, references to web pages having Internet domains and subdomains that are associated with the highest quantities of web pages (and which are to some extent still relevant to the query). Unfortunately, this can mean that smaller websites have a slimmer chance of having their web pages discovered by search engine users, and the businesses that own and operate those websites may have a correspondingly slimmer chance of selling their products to those search engine users. 
       BRIEF SUMMARY 
       [0003]    Certain embodiments are described that involve using cross-domain communication to serve cloud-based product catalog pages from a seller&#39;s/supplier&#39;s domain. In one or more embodiments, the seller/supplier may be a manufacturer, such as a product manufacturer. A typical seller/supplier contracts with a catalog provider to implement and run an online catalog on the supplier&#39;s website. If the catalog provider is a running a SaaS or cloud implementation, then the online catalog is not running on the seller/supplier&#39;s website, and the seller&#39;s/suppliers main URL (e.g., www.supplier.com) is therefore not used when displaying the catalog pages. A typical implementation will use a CNAME DNS, or alias record, to display the catalog pages on the seller&#39;s/supplier&#39;s website. The website “www.supplier.com” will typically use “www.catalog.supplier.com” to display catalog pages on their website. Because of this, the seller/supplier does not receive “credit” for the pages as the search engines know that DNS is an alias, and the catalog pages resides on a separate site. As discussed in greater detail below, the rank of a manufacturer&#39;s/seller&#39;s/supplier&#39;s website page in a web search engine&#39;s search results is, in many situations, directly proportional to the number of web pages hosted on the manufacturer&#39;s website&#39;s domain and/or subdomain (e.g., the total number of web pages making up the website)—the greater the number of pages, the higher the rank. In some instances, a manufacturer&#39;s website may serve one or more webpages that include an embedded Product Catalog Widget, which may allow catalog pages that are dynamically generated by a cloud-based catalog provider to be viewed (e.g., in an end user&#39;s web browser). Embodiments of the disclosure cause search engine crawlers to see web pages provided by a Product Catalog Widget as being hosted on the manufacturer&#39;s website&#39;s domain and/or subdomain, rather than on an external domain (e.g., a domain hosting a website of a Partner providing the Product Catalog Widget). This allows a manufacturer to increase the rank of their web pages in search results from various search engines, while still allowing the manufacturer to use a third-party partner to produce and host the pages that make up the Products Catalog. Embodiments of the invention allow a SaaS of a cloud-based catalog provider to provide all the catalog pages on the supplier&#39;s/seller&#39;s/manufacturer&#39;s main domain, (e.g., “www.supplier.com”). This, in turn, provides a higher number of relevant pages on the supplier&#39;s/seller&#39;s/manufacturer&#39;s website and therefore a higher ranking by the search engines. 
         [0004]    Certain embodiments of the invention use the “JavaScript Object Notation with padding” (JSONP) protocol. In some embodiments, a request for a product locator catalog page may be received at a server computer hosting a website for a product manufacturer. Subsequently, the server computer may request, via a JSONP catalog service proxy, the product locator catalog page from one or more cloud catalog servers. The server computer then may receive, via the JSONP catalog service proxy, the product locator catalog page, and the product locator catalog page may include an embedded catalog widget. Subsequently, the server computer may serve the product locator catalog page. 
         [0005]    In some embodiments, the embedded catalog widget may be configured to allow a user device receiving the product locator catalog page to search a products catalog hosted on the one or more cloud catalog servers. 
         [0006]    In some embodiments, the server computer further may receive a request for a product detail page. Subsequently, the server computer may request, via the JSONP catalog service proxy, the product detail page from the one or more cloud catalog servers. The server computer then may receive, via the JSONP catalog service proxy, the product detail page from the one or more cloud catalog servers. Subsequently, the server computer may serve the product detail page. 
         [0007]    In some embodiments, the product detail page may be dynamically generated by the one or more cloud catalog servers based on the request received from the server computer. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]      FIG. 1  illustrates an example of a typical manufacturer&#39;s networked IT infrastructure linked to an external Web Service, such as a cloud Web Service; 
           [0009]      FIG. 2  is a state transition diagram showing how techniques according to some embodiments can be used to retrieve Product Catalog information via JSONP Proxy; 
           [0010]      FIG. 3  illustrates examples of a Manufacturer&#39;s configuration options for delivering a Corporate Web Site and a Products Catalog using both conventional techniques and the cross-domain communication techniques according to some embodiments; and 
           [0011]      FIG. 4  illustrates an example of a computer system in which various aspects of the disclosure may be implemented. 
       
    
    
     DETAILED DESCRIPTION 
       [0012]    In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of embodiments of the invention. However, it will be apparent that various embodiments may be practiced without these specific details. 
       Manufacturer IT Landscape Summary 
       [0013]    Certain embodiments of the present invention relate to using cross-domain communication to serve cloud-based product catalog pages from a seller&#39;s domain. As noted above, in some instances, a seller or manufacturer may serve one or more webpages that include an embedded Product Catalog Widget, which may allow catalog pages that are dynamically generated by a cloud-based catalog provider to be viewed (e.g., in an end user&#39;s web browser). Such a Product Catalog Widget thus can manage querying and retrieval of products information from a cloud-based Products Catalog. Before describing these aspects in greater detail, an example of a typical Manufacturer&#39;s IT Landscape will be summarized.  FIG. 1  illustrates an example of this landscape. 
         [0014]    In  FIG. 1 , a Manufacturer&#39;s Networked IT Environment  102  is shown. The Manufacturer&#39;s Networked IT Environment  102  may include Ethernet-connected servers, data stores, client computers, and end users. The Manufacturer can use this environment for a variety of internal uses, such as hosting customer-facing Corporate Web Site pages. There may be advantages in cost and labor efficiency to the Manufacturer having the full control enabled by hosting such content and functions in a proximate location. At the same time, it may be advantageous for the Manufacturer to offer customers, within the context of their web site, complex services that may be most efficiently produced and hosted by Partners externally “in the cloud”  104 . These two environments can interact with one another via standard internet communication  106 . 
         [0015]    Another actor in the landscape is the Search Engine Crawler, a program (e.g., a “bot”) that can access publically accessible web pages  108 , index them, and assign them priority ranking in results of searches performed by end users. The cross-domain communication techniques described herein allow for all web pages associated with the Manufacturer to be assigned high ranking in Search Engine search results. 
         [0016]    In particular, the rank of a manufacturer&#39;s website page in a web search engine&#39;s search results is, in many situations, directly proportional to the number of web pages hosted on the manufacturer&#39;s website&#39;s domain (e.g., the total number of web pages making up the website). For example, if a first webpage that includes information about a particular product is hosted on a first domain and a second webpage that includes similar information about the same product is hosted on a second domain that hosts more pages (e.g., other webpages) than the first domain, then the second webpage may be ranked more highly by a search engine in a search for information about the particular product. Because embodiments of the disclosure cause search engine crawlers to see web pages provided by the Product Catalog Widget as being hosted on the manufacturer&#39;s website&#39;s domain, rather than on an external domain (e.g., a domain hosting a website of the Partner providing the Product Catalog Widget), these embodiments enable a manufacturer to increase the rank of their web pages in search results from various search engines, while still being able to use a third-party partner to produce and host the pages that make up the Products Catalog. 
       Example of Products Catalog Workflow Using Cross-Domain Communication 
       [0017]    This section describes techniques according to some embodiments of the invention by which a Manufacturer may source Product Catalog pages from an externally provided Partner Web Service while allowing those pages to appear to end users and Search Engine Crawlers to be within the Manufacturer&#39;s internet domain. In one embodiment, the Products Catalog Widget implements this technique using JSONP cross-domain communication to ensure that both Corporate Web Site pages and externally-hosted Products Catalog pages are indexed within the Manufacturer&#39;s domain, thereby optimizing the ranking of those pages within Search Engine search results. Other techniques may be used in alternative embodiments. 
         [0018]      FIG. 2  is a state transition diagram showing how techniques according to some embodiments can be used to retrieve Product Catalog information via JSONP Proxy. As seen in  FIG. 2 , an End User may use a Client Computer  202 . In this scenario, the End User may be a customer or potential customer of the Manufacturer, and may be using the Manufacturer&#39;s Corporate Web Site to obtain information about products relevant to his or her project. The Manufacturer&#39;s Corporate Web Site may be implemented with Site Services  204  and hosted on Site Servers  212  managed by the Manufacturer. Also on the Site Servers is a Product Catalog Service Proxy  208  that can be used to communicate with Cloud Catalog Servers  206  over the external internet. 
         [0019]    When the User  202  is viewing Product categories served in a web page from the 
         [0020]    Manufacturer&#39;s Corporate Web Site  212 , he or she may select a category, which indirectly requests  220  that the Cloud Servers  206  return a Product Locator catalog page containing the Product Catalog Widget  210 . This Widget may be a set of scripts that enable the Product Locator to be used to search efficiently for products in the catalog, e.g., by specifying product attributes using the Product Locator user interface on the Client Computer  202 . 
         [0021]    The Product Locator page and the Catalog Widget may be sourced from the external Cloud Catalog Web Servers  206  domain using the JSONP protocol for cross-domain communication. The initial request  220  for a Product Catalog page may be received by the Manufacturer Site Services, which request  222  that the JSONP Catalog Service Proxy  214  make a cross domain request  224  to the Cloud Catalog Web Service application programming interface (API)  216  for the Product Locator information and embedded Catalog Widget, which are then retrieved  226  from the Cloud Catalog Web Services  218 . The Product Locator page information and Catalog Widget may be returned  228 ,  230 , to the JSONP Service Proxy, and then to the Manufacturer Web Site Services  232 , which may render the Product Catalog Locator page and serve  234  it to the Client Computer  202  web browser for display. 
         [0022]    The User  202  may then use the Catalog Widget user interface to specify  236  attribute criteria in order to identify his or her preferred product. The Widget may send  238  these criteria to the Cloud Catalog Web Service API  216 , which makes a request  240  to the Cloud Catalog Web Service  218  to get products satisfying criteria specified by the User using the Product Locator. The Cloud Catalog Web Service  218  logic determines the product set conforming to the specified characteristics, and returns  242 ,  244 , a list of the products satisfying these criteria to the Catalog Widget  210 , which then renders the updated Product Locator page for display in the Manufacturer Site page  246 . This process may be invoked iteratively as often as is needed for the User to identify the product satisfying his or her criteria. In an embodiment of the invention, the criteria can include a part number, a manufacturer identity, a year of manufacture, a part type (screw, bolt, nut, etc.), a current price range for the product or part, whether the product or part is in stock at a local store within a specified distance of a current location of User  202 , and/or other criteria. 
         [0023]    Once the User has identified a product satisfying his or her criteria, he or she may request that a Catalog Product Detail page be shown for that product. The User can do this by selecting the appropriate link on the Product Locator page, which requests  248  this page from the 
         [0024]    Manufacturer Site Services  212 , which in turn request  250  that the Catalog Service Proxy  214  retrieve  252  the appropriate Part Detail information via the Cloud Catalog Services API  216  with a request  254  to the Cloud Catalog Services. The appropriate Product Detail information may be assembled by logic in the Cloud Catalog Services and returned  256 ,  258 ,  260 , to Manufacturer Web Site Services  212 , which creates the Product Detail page using this returned product-specific information and serves  262  it to the browser for viewing by the User  252 . The Product Detail information can include information such as an identity of a catalog in which the product or part appeared, a page number on which that product or part appeared, a year in which that product or part was manufactured, a unique product or part identifier, an identity of the manufacturer of that product or part, a set of local stores (and their street addresses, phone numbers, and/or website URLs) at which the product or part is currently in stock, current real-time prices of the product or part at those stores, current real-time quantities of the product or part in stock at those stores, a list of related products or parts viewed and/or purchased by others who viewed or purchased that product or part, a link to information concerning a new product or part that has obsoleted the selected product or part, attributes of the part, etc. The Product Detail information can also include a three-dimensional computer-aided design (CAD) model of the product or part, with which User  252  can interact by zooming, rotating, or downloading (or directly inserting) a CAD file of the product, in the correct format, into their existing CAD design. Part attributes can include facts about a part such as length, weight, color, maximum pressure, etc. The attributes that a particular part has can vary based on the type of that part. For example, a caster might have attributes such as wheel diameter, tread width, load weight, etc., while a gear might have attributes such as number of grooves, tooth pitch, flange diameter, etc. In an embodiment, the Cloud Catalog Services can be queried for parts that have part attributes that are specified by the User  202 . For example, the Cloud Catalog Web Service  218  logic can determine a product set that has the part attributes that are specified by the User  202 . 
       Benefits of Technique 
       [0025]      FIG. 3  illustrates some of the features enabled by this cross-domain technique for product catalog implementation and delivery using four different example configurations for delivery of such a catalog. 
         [0026]    In Configuration A, both the Corporate Web Site Servers  304  and the Catalog Servers  306  are maintained by the Manufacturer, and all pages may be served within its home domain  308 . 
         [0027]    In Configuration B, both systems  312 ,  314  are hosted in the cloud by a Partner, and again, all pages for the Corporate Site and the Product Catalog may be served from the same domain  316 . 
         [0028]    In Configuration C, the corporate web site  320  is hosted by the manufacturer and the catalog system  322  is hosted in the cloud by a Partner; and pages from each of these systems may be delivered to the User from different domains  324 ,  326 . 
         [0029]    In configuration D, techniques according to some embodiments of the invention are used. In this configuration, the Manufacturer-maintained Servers  320  may both deliver pages  334  and act as an intermediary  336  between the User&#39;s Client Computer  318  and the Catalog Servers  322  maintained by a Partner in the cloud. 
         [0030]    Configuration A may provide the advantage of offering the manufacturer web site maintenance flexibility and the Search Engine Optimization (SEO) advantage of all catalog pages within the same internet domain owned by the manufacturer. However, Configuration A may have the disadvantage that the manufacturer cannot gain the cost and maintenance efficiency advantages of having the complex catalog system hosted on Partner servers in the cloud. 
         [0031]    Configuration B may be considered the reverse of Configuration A. It may have the same SEO advantage as Configuration A, since both web site and catalog are in the manufacturer&#39;s domain. However, because that domain is externally hosted by a cloud-based Partner, the solution can be less flexible and cost-effective for the manufacturer. 
         [0032]    In Configuration C, the Manufacturer Web Site and Catalog Servers are hosted in different locations and their pages are in different domains. This configuration may allow the manufacturer needed flexibility and control in maintaining their corporate web site, and at the same time may provide the cost efficiencies of an externally hosted catalog solution. However, since the catalog pages are not in the manufacturer&#39;s domain, they might not contribute to SEO page rank for the manufacturer. 
         [0033]    Configuration D is similar to Configuration C, but with a significant difference. The manufacturer&#39;s web site and catalog are hosted at different locations, thereby providing the advantages cited for Configuration C. However, because Configuration D uses cross-domain JSONP-based invocation of catalog services from a Partner, the catalog pages appear to the user and to search engine indexing programs (bots&#39;) as being in the manufacturer&#39;s domain. This can contribute substantially to the manufacturer&#39;s search engine results page rank, thereby conferring a major business advantage. 
         [0034]    The configurations depicted in  FIG. 3  and described above are not intended to be limiting. Various other configurations are possible in alternative embodiments. 
         [0035]      FIG. 4  illustrates an example of a computer system  400  in which various aspects of the disclosure may be implemented. The various computers and servers illustrated in the previously described figures, such as the client computer  202 , the manufacturer web site servers  204 , and the cloud catalog servers  206 , may implement any and/or all of the components of computer system  400  depicted in  FIG. 4 . In some arrangements, these computers and servers further may include other components in addition to and/or instead of those seen in computer system  400 . 
         [0036]    As seen in  FIG. 4 , the computer system  400  may include a processor  405 , which may be interconnected to other components of the computer system  400  via system bus  410 . This interconnection may enable processor  405  to execute instructions stored in memory  415 , for example, and control other components of the computer system  400 , such as network interface  420 , one or more input devices  425 , and one or more output devices  430 . Network interface  420  may facilitate communication with other computer systems, and may include wired network interfaces, such as an Ethernet interface, and/or wireless network interfaces, such as an IEEE 802.11 interface. Input devices  425  may include peripheral devices, such as one or more keyboards, mice, microphones and/or the like, and output devices  430  may include various output subsystems, such as one or more displays, speakers, and/or the like. Other components may be similarly coupled to and/or otherwise implemented in computer system  400 . 
         [0037]    Although the invention has been described with respect to specific embodiments, it will be appreciated that the invention is intended to cover all modifications and equivalents within the scope of the following claims. Any and/or all of the techniques, methods, and/or method steps discussed above can implemented in software (e.g., programs, code, instructions), hardware, or combinations thereof. The software may be stored on a non-transitory storage medium (e.g., the memory discussed above), and, when executed by one or more processors, may cause a computer system to perform one or more of the techniques, methods, and/or method steps. Additionally or alternatively, in some embodiments, any and/or all of the software may leverage a Software as a Service (SaaS) model, in which one or more methods and/or method steps are executed and/or otherwise performed in the cloud (e.g., at a web server) in order to provide various functionality to a remote end user (e.g., at the user&#39;s web browser).