KR20210157389A - 공동 브라우징 세션에서 독점 자원에 액세스하기 위한 방법 및 장치 - Google Patents

공동 브라우징 세션에서 독점 자원에 액세스하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20210157389A
KR20210157389A KR1020217015387A KR20217015387A KR20210157389A KR 20210157389 A KR20210157389 A KR 20210157389A KR 1020217015387 A KR1020217015387 A KR 1020217015387A KR 20217015387 A KR20217015387 A KR 20217015387A KR 20210157389 A KR20210157389 A KR 20210157389A
Authority
KR
South Korea
Prior art keywords
resource
browser
browsing
joint
url
Prior art date
Application number
KR1020217015387A
Other languages
English (en)
Inventor
데보라 멘데즈
Original Assignee
글랜스 네트웍스, 인크.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 글랜스 네트웍스, 인크. filed Critical 글랜스 네트웍스, 인크.
Publication of KR20210157389A publication Critical patent/KR20210157389A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9558Details of hyperlinks; Management of linked annotations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/134Hyperlinking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

공동 브라우징 서비스는 독점 자원이 공동 브라우징 세션에서 액세스되도록 하는 자원 획득 프로세서를 구현한다. 일부 실시예에서, 방문자 브라우저의 공동 브라우징 자바스크립트는 DOM의 자원 URL의 일부 또는 모두가 자원 획득 프로세스를 가리키도록 변환하므로 에이전트 브라우저는 웹 사이트가 아닌 자원 획득 프로세스에서 URL 참조된 자원을 검색하게 된다. 자원 획득 프로세스는 웹 사이트 또는 방문자로부터 자원을 획득한다. 자원 획득 프로세스가 에이전트를 대신하여 독점 자원을 확보할 수 있고 이 독점 자원을 공동 브라우징 세션 중에 에이전트에 제공할 수 있으므로, 에이전트는 공동 브라우징 세션 중에 방문자의 브라우저를 일관되게 볼 수 있다.

Description

공동 브라우징 세션에서 독점 자원에 액세스하기 위한 방법 및 장치
본 출원은 2018년 11월 21일에 출원된 미국가 특허 출원 62/770,493(공동 브라우징 세션에서 독점 자원에의 액세스라는 제목으로 출원됨)에 우선권을 주장하며, 그 내용은 여기에 참조로 포함된다.
이 특허 문서 공개의 일부는 저작권 보호 대상인 자료를 포함한다. 저작권 소유자는 특허 및 상표청 특허 파일 또는 기록에 나타나는 정확한 형식의 특허 문서나 특허 공보특허를 누가 복제하던지 이의를 제기하지 않지만, 모든 저작권을 보유한다.
본 발명은 통신 세션에 관한 것으로, 특히 공동 브라우징 세션에서 독점 자원에 액세스하기 위한 방법 및 장치에 관한 것이다.
제 1 브라우저의 콘텐츠가 지리적으로 먼 위치에 있는 제 2 브라우저에서 공유되고 재생되는 것이 가능하다. 이를 수행하는 한 가지 방법은 제 1 브라우저의 컨텐츠를 설명하는 다큐먼트 오브젝트 모델(DOM)이 제 2 브라우저로 전달되도록 하는 것이다. 제 2 브라우저는 제 1 브라우저에서 받은 DOM을 사용하여 제 1 브라우저의 콘텐츠를 다시 생성한다.
불행히도, 단순히 DOM을 갖는 것은 일부 경우에, 제 1 브라우저의 모든 콘텐츠가 제 2 브라우저에서 신뢰성 있게 재생될 수 있도록 하기에 부적절하다. 특히 웹 사이트 구축 방식에 따라, 제 1 브라우저에 표시되는 것의 컨텐츠는 글꼴, 캐스케이딩 스타일 시트(CSS) 및 이미지와 같은 자원을 기반으로 할 수 있으며, 이들은 액세스를 위해 쿠키를 필요로 하므로 제 1 브라우저에서만 사용 가능하다. 제 2 브라우저는 웹 사이트에서 동일한 독점 자원을 얻을 수 없기 때문에, 제 2 브라우저의 컨텐츠는 제 1 브라우저에 표시된 내용을 올바르게 미러링하지 않는다. 또한, 일부 웹 사이트는 CORS 헤더를 사용하여 다른 도메인의 브라우저가 웹 사이트 자원에 액세스하지 못하도록 한다. 이 경우 CORS는 에이전트 뷰어가 웹 사이트에서 직접 자원에 액세스하지 못하도록 하지만, 자원은 "자원 획득 프로세스"를 통해 액세스될 수 있다. 따라서, 제 1 브라우저에 독점적인 자원이 제 2 브라우저에 의해 공동 브라우징 세션에서 액세스될 수 있도록 하기 위한 시스템을 제공하는 것이 바람직하다다.
발명의 내용과 요약 섹션은 이하 상세한 설명에서 논의되는 일부 개념을 소개하기 위해 본 명세서에서 제공된다. 발명의 내용과 및 요약 섹션은 포괄적이지 않으며 아래에 제시된 청구 범위에 명시된, 보호 가능한 주제의 범위를 설명하기 위한 것은 아니다.
일부 실시예에서, 공동 브라우징 서비스는 방문자 브라우저에서 사용중인 독점 자원이 공동 브라우징 세션에서 에이전트 브라우저에 의해 액세스될 수 있도록 자원 획득 프로세스를 구현한다. 방문자의 DOM의 자원 URL의 일부 또는 모두는 획득 프로세스를 가리키도록 변환되므로, 에이전트 브라우저는 웹 사이트가 아닌 자원 획득 프로세스에서 URL 참조된 자원을 검색하게 된다. 자원 획득 프로세스는 웹 사이트 또는 방문자로부터 자원을 획득한다. 자원 획득 프로세스가 에이전트를 대신하여 독점 자원을 확보할 수 있고 이 독점 자원을 공동 브라우징 세션 중에 에이전트에 제공할 수 있으므로, 에이전트는 공동 브라우징 세션 중에 방문자의 브라우저를 일관되게 볼 수 있다.
본 발명의 양태는 첨부된 청구 범위에서 구체적으로 지적된다. 본 발명은 유사한 참조 부호가 유사한 요소를 나타내는 다음 도면에서 예로서 예시된다. 다음의 도면은 단지 예시의 목적으로 본 발명의 다양한 실시 예를 개시하고 본 발명의 범위를 제한하려는 의도가 아니다. 명확성을 위해 모든 구성 요소가 모든 도면에서 참조부호가 표기된 것은 아니다:
도 1은 일부 실시 예에 따른 공동 브라우징 세션에서 독점 자원에 액세스하기 위한 구성 요소 네트워크의 기능 블록도이다.
도 2는 일부 실시 예에 따르면, 공동 브라우징 세션에서 독점 자원에 제공하는 것과 관련하여 도 1의 여러 구성 요소들 간의 정보 전송을 보여주는 스윔 레인도이다.
다음의 상세한 설명은 본 발명의 하나 이상의 실시 예에 대한 철저한 이해를 제공하기 위해 수많은 특정 세부 사항을 설명한다. 그러나, 당업자라면 본 발명이 이러한 특정 세부 사항없이 실시될 수 있다는 것을 인식할 것이다. 다른 예에서, 잘 알려진 방법, 절차, 구성 요소, 프로토콜, 알고리즘 및 회로는 본 발명을 모호하게 하지 않기 위해 상세하게 설명되지 않았다.
도 1은 일부 실시 예에 따른 공동 브라우징 세션(132)에서 독점 자원에 액세스하기 위한 구성 요소의 네트워크(100)의 기능 블록도이다. 도 1에 도시된 바와 같이, 일부 실시 예에서 웹 서버(110)는 웹 사이트(115)를 호스팅한다. 방문자(120)는 웹 서버(110)로부터 웹 페이지를 로드하기 위해 방문자 브라우저(125)를 사용하여 웹 사이트(115)에 액세스한다. 공동 브라우징 서비스(130)는 에이전트(135)가 에이전트 브라우저(140)에서 방문자 브라우저(125)의 콘텐츠를 볼 수 있는 공동 브라우징 세션(132)을 용이하게 한다.
일부 실시 예에서, 웹 서버(110)로부터 로드된 웹 페이지는 공동 브라우징 자바스크립트(145)로 스크립팅된다. 대안으로, 공동 브라우징 자바스크립트(145)는 플러그인 또는 확장자로서 방문자 브라우저(125)에 로드될 수 있다. 공동 브라우징 자바스크립트(145)는 방문자 브라우저(125)에 로드된 웹 페이지를 설명하는 문서 오브젝트 모델(DOM)이 공동 브라우징 서비스(130)로 전달되게 한다. 공동 브라우징 서비스(130)는 에이전트 브라우저(140)가 방문자의 브라우저(125)의 콘텐츠에 대한 일관된 뷰를 가질 수 있도록 DOM을 공동 브라우징 세션(132)에서 에이전트 브라우저(140)로 전달한다. 이러한 성격의 예시적인 공동 브라우징 시스템이 어떻게 구현될 수 있는지에 대한 추가 세부 사항은 미국 특허 번호 9,736,214(다른 정보 공유 형식과의 공동 브라우징 통합)에서 제공되며, 그 내용은 여기에 참조로 포함된다.
에이전트 브라우저(140)가 방문자 브라우저(125)의 내용을 설명하는 DOM을 수신하면, 통상적으로 에이전트 브라우저(140)는 웹 사이트(115)로부터 DOM에 기술된 자원을 요청할 것이다. 그러나, 방문자 브라우저(125)가 웹 사이트(115)로부터 획득할 수 있기 때문에 에이전트 브라우저(140)가 웹 사이트(115)로부터 동일한 자원을 획득할 수 없는 경우가 있다. 예를 들어, 웹 사이트(115)가 구성되는 방식에 따라, 방문자 브라우저(125)는 방문자 브라우저(125)와 같이, 쿠키를 제공하는 클라이언트에게만 제공될 폰트, 캐스케이딩 스타일 시트(CSS) 및 이미지를 가질 수 있다. 마찬가지로, 에이전트 브라우저(140)가 웹 사이트(115)와 다른 도메인에 있는 웹 애플리케이션을 실행하는 경우, 교차 출처 자원 공유(CORS) 제한은 에이전트 브라우저(140)가 웹 사이트(115)의 제한된 자원에 액세스하는 것을 방지할 수 있다. 본 명세서에서 사용되는 바와 같이, 용어 "독점"은 쿠키 및/또는 CORS 보호되는 자원을 지칭하도록 정의된다.
예를 들어, 많은 회사는 공동 브라우징 세션(132)에서 에이전트 브라우저(140)에 액세스할 수 없는 웹 사이트에 자원을 가지고 있다. 일부 일반적인 시나리오에는 교차 출처 액세스될 수 없는 폰트 또는 CSS를 포함한다. 따라서 에이전트 브라우저(140)가 한 도메인에 있고 자원이 다른 도메인에 있는 경우, CORS 제한은 에이전트 브라우저(140)가 자원에 액세스하는 것을 방지할 수 있다. 다른 예로서, 자원은 은행 수표 이미지와 같은 계좌 특정 이미지와 같이 방문자 브라우저(125)에 특정한 이미지일 수 있으며, 이는 에이전트 브라우저(140)가 가지지 않고 공동 브라우징 서비스(130)가 가지지 않는 세션 쿠키를 요구할 수 있다.
일부 실시 예에 따르면, 공동 브라우징 서비스(130)는 공동 브라우징 세션(132)에 대한 자원 획득 프로세스(150)를 인스턴스화한다. 공동 브라우징 자바스크립트(145)는 브라우저(125)의 DOM을 복사하고 DOM을 공동 브라우징 세션(132)에서 공동 브라우징 서비스(130)로 전달한다. 에이전트 브라우저(140)는 공동 브라우징 세션(132)에서 전달된 DOM을 수신하고 웹 사이트(115)가 아닌 자원 획득 프로세스(150)로부터 DOM에서 참조된 자원의 적어도 일부를 요청한다. 자원 획득 프로세스(150)는 자원에 대한 요청을 웹 사이트(115)와 방문자 브라우저(125) 모두에 제출함으로써 자원 요청을 서비스한다. 자원 획득 프로세스(150)가 방문자 브라우저 또는 웹 사이트로부터 자원을 수신할 때, 요청된 자원을 에이전트 브라우저(140)로 반환한다. 자원 획득 프로세스(150)를 사용하게 되면 에이전트 브라우저(140)를 대신하여 독점 자원을 획득하므로 에이전트 브라우저(140)가 방문자 브라우저(125)의 콘텐츠를 보다 근접하게 복제할 수 있다.
도 2는 일부 실시 예에 따르면, 공동 브라우징 세션(132)에서 독점 자원에 액세스하기 위한, 도 1의 여러 구성 요소들 간의 정보 전송을 보여주는 스윔 레인도이다. 도 2에 도시된 바와 같이, 화살표 200에서 방문자 브라우저(125)는 웹 사이트(115)에서 웹 페이지 및 공동 브라우징 자바스트립트(145)를 다운로드한다. 화살표(205 및 210)에서 공동 브라우징 세션(132)이 시작된다. 공동 브라우징 세션(132)를 시작하는 방법에는 여러 가지가 있다. 예를 들어, 방문자 브라우저(125)는 에이전트 브라우저(140)에 의해 결합되는 공동 브라우징 세션(132)을 시작할 수 있거나, 에이전트는 방문자가 세션을 시작하도록 트리거한 다음 에이전트에 의해 참여할 수 있거나, 에이전트 브라우저(140)는 공동 브라우징 세션(132)을 개시할 수 있고 방문자 브라우저(125)는 디스플레이 모드에서 공동 브라우징 세션(132)에 참가할 수 있다. 일부 실시 예에 따르면, 공동 브라우징 세션(132)이 어떻게 시작되는지에 관계없이, 공동 브라우징 서비스(130)는 에이전트 브라우저(140)에 의해 공동 브라우징 세션(132) 동안 사용되는 자원 획득 프로세스(화살표 215)를 인스턴스화하여 방문자 브라우저(125)의 공유 DOM에 지정된 자원 중 적어도 일부에 액세스한다.
일부 실시 예에서, 방문자 공동 브라우징 자바스크립트(145)는 방문자 브라우저(125)의 DOM의 URL을 자원 획득 프로세스(150)를 가리키도록 변환한다. 일부 실시 예에서, 자원 획득 프로세스(150)가 공동 브라우징 세션(132)에서 사용하기 위해 인스턴스화되면, 자원 획득 프로세스(150)의 URL은 방문자 브라우저(125)로 전달된다(화살표 220). 대안적으로, 일부 실시 예에서, 방문자 공동 브라우징 자바스크립트(145)는 예컨대 공동 브라우징 세션(132)을 호스팅하는데 사용되는 공동 브라우징 서비스(130)에서의 서버에 기초하여 자원 획득 프로세스(150)의 URL을 유도할 수 있다 [공동 브라우징 서버]/에이전트/자원/[세션 ID]. 방문자 브라우저(125)는 자원 획득 프로세스(150)의 URL을 사용하여 URL이 자원 획득 프로세스(150)를 가리키도록 DOM 내의 상대적 및 절대적 자원 URL을 변환한다(화살표 225). 일부 실시 예에서는 방문자 브라우저(125)가 공동 브라우징 자바스크립트(145)에 의해 구현된 URL 변환을 갖지만, 다른 실시 예에서 URL 변환은 예를 들어, 에이전트 브라우저(140), 공동 브라우징 서비스(130), 또는 자원 획득 프로세스(150)에 의해 네트워크(100)의 다른 구성 요소에서 수행된다.
URL 변환 프로세스가 방문자 브라우저에서 구현되는 실시 예에서, DOM에서 참조된 올바른 URL의 세트가 방문자 공동 브라우징 자바스크립트(145)에 의해 변환되면, 수정된 DOM은 방문자 브라우저(125)로부터 공동 브라우징 서비스(130)로 전달되고(화살표 230) 수정된 DOM은 공동 브라우징 서비스(130)에서 에이전트 브라우저(140)로 전달된다(화살표 235). URL 변환이 공동 브라우징 서비스(130)에서 수행되는 실시 예에서, 방문자 공동 브라우징 자바스크립트는 방문자 브라우저(125)의 DOM을 공동 브라우징 서비스(130)로 전달하고(화살표 230), 공동 브라우징 서비스(130)는 URL 변환 프로세스를 구현하여, 수정된 DOM을 에이전트 브라우저(140)로 전달한다(화살표 235).
에이전트 브라우저(140)가 URL 변환 프로세스를 구현하는 실시 예에서, 공동 브라우징 서비스(130)는 자원 획득 프로세스(150)의 URL을 방문자 브라우저(125)로 전달한다(화살표 220). 대안적으로, 일부 실시 예에서, 에이전트 브라우저(140)는 예를 들어, 공동 브라우징 세션(132)을 호스팅하는데 사용되는 공동 브라우징 서비스(130)에서의 서버에 기초하여 자원 획득 프로세스(150)의 URL을 유도할 수 있다 [공동 브라우징 서버]/에이전트/자원/[세션 ID]. 에이전트 브라우저(140)가 자원 획득 프로세스(150)의 URL을 가지면, 에이전트 브라우저(140)는 URL 변환 프로세스를 구현하여 DOM에서 참조된 URL의 적어도 서브세트가 자원 획득 프로세스(150)를 가리키도록 할 수 있다.
URL 변환 프로세스가 구현되는 위치에 관계없이, URL 변환 후 에이전트 브라우저(140)에 로드되는 수정된 DOM의 URL 중 일부 또는 전부는 자원 획득 프로세스(150)를 가리킬 것이다. 따라서, 에이전트 브라우저(140)가 DOM에 의해 설명된 웹 페이지를 로드하려고 할 때, 에이전트 브라우저(140)는 자원 획득 프로세스(150)에 대한 자원 요청의 일부 또는 전부를 발행하게 된다(화살표 240).
일부 실시 예에서 DOM의 모든 URL은 자원 획득 프로세스(150)를 가리키도록 변환된다. 이들 실시 예에서, 에이전트 브라우저(140)는 자원 획득 프로세스(150)로부터 DOM에서 참조된 모든 자원을 요청한다(화살표 240).
다른 실시 예에서, DOM의 URL의 제 1 서브세트는 자원 획득 프로세스(150)를 가리키도록 변환된다. 이들 실시 예에서, 자원의 제 1 서브세트는 자원 획득 프로세스(150)로부터 에이전트 브라우저(140)에 의해 요청되고(화살표 240), 다른 자원은 웹 사이트(115)로부터 에이전트 브라우저(140)에 의해 요청된다(화살표 242). 따라서, 수정된 DOM의 URL 중 일부만이 자원 획득 프로세스(150)를 가리킬 때, 에이전트 브라우저(140)가 DOM에 의해 설명된 웹 페이지를 로드하려고 할 때, 에이전트 브라우저(140)는 변환된 URL과 연관된 자원 요청을 자원 획득 프로세스(150)에 발행하고(화살표 240) 비 변환 URL에 대한 자원 요청을 정상적인 방식으로 웹 사이트(115)에 발행하게 된다(화살표 242).
자원 획득 프로세스(150)가 자원 요청을 수신하면(화살표 240), 자원 획득 프로세스(150)가 캐싱된 요청 자원을 가지면, 자원 획득 프로세스(150)는 요청된 자원을 에이전트 브라우저(140)로 전달하게 된다(화살표 245). 자원 획득 프로세스(150)가 이전에 요청된 자원을 획득하고 캐시하지 않은 경우, 자원 획득 프로세스(150)는 웹 사이트(115)(화살표 250), 방문자 브라우저(125)(화살표 255), 또는 웹 사이트(115)와 방문자 브라우저(125)(화살표 250, 255) 모두로부터 자원을 요청한다.
일부 실시 예에서, 자원 획득 프로세스(150)는 웹 사이트(115) 및 방문자 브라우저(125) 중 하나나 다른 것으로부터 응답을 먼저 기다리지 않고, 둘 다로부터 자원을 요청한다. 예를 들어, 일부 실시 예에서, 자원 획득 프로세스(150)는 방문자 브라우저(125)에게 자원을 요청하며(화살표 255), 방문자 브라우저(125)로부터 응답을 수신하기 전에(화살표 270), 또한 동일한 자원에 대한 요청을 웹 사이트(115)로 보낸다(화살표 250). 마찬가지로, 일부 실시 예에서 자원 획득 프로세스(150)는 웹 사이트(115)에 자원을 요청하고(화살표 250), 웹 사이트(115)(화살표 260)로부터 응답을 받기 전에, 또한 동일한 자원에 대한 요청을 방문자 브라우저(125)로 보낸다(화살표 255).
일부 예에서, 요청된 자원은 웹 사이트(115)로부터 자원 획득 프로세스(150)에 이용 가능하다. 요청된 자원이 웹 사이트(115)에서 제공되는 경우, 웹 사이트(115)는 요청된 자원을 자원 획득 프로세스(150)로 전달하고(화살표 260) 자원 획득 프로세스(150)는 요청된 자원을 에이전트 브라우저(140)에 전달함으로써(화살표 265) 자원 요청을 이행한다. 일부 예에서, 요청된 자원은 방문자 브라우저(125)로부터 자원 획득 프로세스(150)에 이용 가능하다. 요청된 자원이 방문자 브라우저(125)에서 사용 가능한 경우, 방문자 브라우저(125)는 요청된 자원을 자원 획득 프로세스(150)로 전달하고(화살표 270), 자원 획득 프로세스(150)는 요청된 자원을 에이전트 브라우저(140)에 전달함으로써(화살표 275) 자원 요청을 이행한다.
일부 경우에, 방문자 브라우저(125)는 이미 요청된 자원을 캐시에 가지고 있게 되지만, 브라우저의 자바스크립트는 플랫 파일로서 이러한 자원에 액세스할 수 없다. 예를 들어, 브라우저에 폰트가 로드되어 있고, CSS가 이 폰트를 참조할 수 있지만, 자바스크립트에는 폰트에 대한 핸들을 파일로 갖고 있지 않다. 이 경우, 방문자 브라우저(125)는 웹 사이트(115)에 파일에 대한 XMLHttpRequest(XHR 요청)를 한다. 방문자 브라우저(125)는 실제로 캐시에서 실제 파일을 가져올 수 있거나, 자원이 웹 사이트(115)와 다른 도메인에 있는 경우, 방문자 브라우저(125)는 CORS 헤더를 사용하여 웹 사이트(115)에 요청을 재발행해야 할 수 있다. 요청된 자원을 얻으면(화살표 285), 자원 획득 프로세스(150)(화살표 270)로 전달되고 에이전트 브라우저(140)로 전달된다(화살표 275).
일부 경우에, 요청된 자원은 웹 사이트(115) 및 방문자 브라우저(125) 모두로부터 자원 획득 프로세스(150)에 이용 가능하게 된다. 일부 실시 예에서, 자원 획득 프로세스(150)가 웹 사이트(115)(화살표 260) 또는 방문자 브라우저(125)(화살표 270)로부터 제 1 응답을 수신할 때, 자원 획득 프로세스(150)는 자원 요청을 이행하기 위해 응답을 에이전트 브라우저(140)로 전달한다(화살표 265 또는 275). 선택적으로, 자원이 한 소스에서 수신되면, 다른 소스에 대한 요청을 취소할 수 있다.
일부 경우에, 자원 획득 프로세스(150)는 웹 사이트(115)(화살표 260) 및 방문자 브라우저(125)(화살표 270) 둘 다로부터 응답을 수신하게 된다. 일부 실시 예에서, 두 응답 모두가 http 상태(200)(ok)를 반환하는 경우, 응답은 일반적으로 동등하고 자원 획득 프로세스(150)는 에이전트 브라우저(140)에 자원 요청을 수행하기 위한 어느 응답을 선택할 수 있다. 한 가지 예외는 응답 중 하나가 예상 이미지, 글꼴 또는 CSS 콘텐츠 유형 대신에, 콘텐츠 유형 텍스트/html을 반환하는 경우이다. 이는 일반적으로 웹 서버(110)가 자원 자체 대신에 오류 페이지를 반환했음을 의미한다. 일부 실시 예에서, 방문자 브라우저(125) 또는 웹 사이트(115) 중 하나가 오류를 반환하고 다른 것이 http 상태(200)(ok)를 반환하는 경우, 상태(200)의 응답이 사용된다. 둘 다 http 오류 상태 코드를 반환하는 경우, 응답 중 하나, 예를 들어, 오류 코드가 더 낮은 응답이 선택될 수 있는데, 이 인스턴스에서 응답이 선택되는 방법은 구현에 따라 다를 수는 있다.
일부 실시 예에서, 자원 획득 프로세스(150)는 웹 사이트(115)의 자원을 캐시하고 웹 사이트 자원을 에이전트 브라우저(140)에 제공한다(화살표 245).
일부 실시 예에서, html을 공동 브라우징 서비스(130)에 업로드할 때, 방문자가 공동 브라우징 자바스크립트(145)가 <base> 태그 및 자원 URL을 조정하므로, 관련 웹 사이트 자원 요청은 모두 자원 획득 프로세스(150)를 통해 리디렉트된다. 방문자 공동 브라우징 자바스크립트(145)는 또한 모든 절대 하이퍼 텍스트 참조(href) 및 소스(src) 속성을 상대 속성으로 변환하므로, <base> 태그와 결합하면, href 또는 src URL은 자원 획득 프로세스(150)에서 URL을 참조하게 된다.
자원 획득 프로세스(150)가 에이전트 브라우저(140)로부터 웹 사이트 자원에 대한 요청을 수신하면, 로컬 캐시에서 웹 사이트 자원을 제공한다(화살표 245). 자원 획득 프로세스(150)가 아직 자원을 가지고 있지 않다면, 방문자 컴퓨터(120)의 sockjs 연결에 대한 메시지를 전송함으로써 방문자 브라우저(125)(화살표 255)로부터 자원을 요청한다. 방문자 브라우저(125)가 현재 공동 브라우징 세션(132)에 연결되어 있지 않은 경우, 예를 들어 방문자가 새 페이지를 탐색하는 과정에 있기 때문에, 자원 획득 프로세스(150)는 다음에 방문자 브라우저(125)가 연결될 때 방문자 공동 브라우징 자바스크립트(145)에 의해 처리될 세션 상태에 요청을 추가한다. 자원 획득 프로세스(150)는 또한 웹 서버(110)로부터 직접 자원을 요청한다(화살표 250).
방문자 브라우저(125)는 자원을 자원 획득 프로세스(150)에 업로드하고/하거나(화살표 270) 웹 서버(110)는 자원을 자원 획득 프로세스(150)에 응답한다(화살표 260). 자원 획득 프로세스(150)는 세션 별 영역에 자원을 저장한다. 자원 획득 프로세스(150)는 방문자 브라우저(125)에 의해 업로드되거나 웹 서버(110)에 의해 반환된 임의의 CSS 파일을 스캔하여 이미지, 글꼴 또는 다른 CSS 파일에 대한 URL을 찾고, CSS 파일의 절대 URL을 상대 URL로 변환한다.
일부 실시 예에서 캐시는 단일 방문자(120)에 특정한 자원을 저장하는 데 사용된다. 일부 실시 예에서, 자원 획득 프로세스(150)는 공동 브라우징 세션(132)의 끝에서 모든 캐시된 자원을 제거한다. 다른 실시 예에서, 공통 캐시는 공통 요청 자원을 저장하는데 사용되어 이들 공통 요청된 자원이 다수의 방문자(120)와 공동 브라우징 세션(132)을 위해 캐시로부터 공급될 수 있도록 한다. 이 경우, 캐시된 자원은 공동 브라우징 세션(132)이 끝날 때 제거되지 않을 수 있다.
기본 태그
웹 페이지의 URL을 변환하는 것과 관련하여, 일부 실시 예에서, 방문자 공동 브라우징 자바스크립트(145)는 다음 기본 태그를 추가하므로, 페이지상의 상대 URL은 모두 자원 획득 프로세스(150)를 호스팅하는 공동 브라우징 서비스(130)에서의 서버를 참조한다:
<base href="/agent/resource/sessionid/path-to-visitor-page">
페이지에 이미 href가 있는 기본 태그가 있는 경우, 방문자 공동 브라우징 자바스크립트(145)는 자원 획득 프로세스(150)를 호스팅하는 공동 브라우징 서비스(130)에서의 서버를 가리키도록 수정한다. 예를 들면:
<base href="https://otherserver.abc.com/a/b/c">은
<base href="/agent/resource/sessionid/https-otherserver.abc.com/a/b/c">
로 수정된다.
절대 URL은 몇 가지를 대체하여 URL 경로 항목에 매핑되는 것에 유의한다:
:// or // maps to -/
이로 인해 이들 URL이 에이전트 브라우저(140)에 대한 상대 URL처럼 보이게되는 반면, 자원 획득 프로세스(150)는 여전히 그들을 원래의 URL로 다시 매핑할 수 있다. 일부 구현 예에서, 이 매핑은 방문자 공동 브라우징 자바스크립트(145)의 자바스크립트 함수에서 방문자 측에서 구현된다. iframe의 경우, "프레임 경로"도 또한 기본 태그에 삽입된다. 아래 iframe 섹션을 참조한다.
DOM의 절대 URL
일부 실시 예에서, <img> 및 <link> 태그의 절대 URL은 상대 URL로 변환되므로, 에이전트 브라우저(140)는 이러한 자원에 대한 요청을 자원 획득 프로세스(150)로 전송한다. 예를 들면:
<link href="https://otherserver.abc.com/a/b/c/style.CSS"> 는
<link href="https-otherserver.abc.com/a/b/c/style.CSS">
로 수정된다.
일부 실시 예에서, <img> src 및 srcset 속성은 유사하게 수정된다.
일부 실시 예에서, 공동 브라우징 자바스크립트(145)는 특정 유형의 파일의 URL만 변환하므로, 에이전트 브라우저(140)는 웹 사이트(115)로부터 직접 변환되지 않은 자원을 얻게 된다. 예를 들어, 일부 실시 예에서 방문자 공동 브라우징 자바스크립트(145)는 CSS, img 및 폰트 자원와 관련된 URL을 변환하지만, 공개적으로 이용 가능하고 방문자 브라우저(125)에 독점적이지 않은 웹 사이트(115)의 측면과 관련된 URL을 변환하지 않는다. 이러한 방식으로, 공동 브라우징 서비스(130)는 일반적으로 웹 사이트(115)로부터 직접 이용 가능한 에이전트 브라우저(140)에 대한 자원을 획득하는 데 부담을 주지 않는다.
CSS 파일의 절대 URL
CSS 파일이 방문자 공동 브라우징 자바스크립트(145)에 의해 업로딩되면, 자원 획득 프로세스(150)는 이들을 절대 URL을 위해 스캔한다. 절대 URL은 동일한 규칙에 따라 자원 획득 프로세스(150)에서 URL로 변환된다.
호출 자원 맵
일부 실시 예에서, 자원 획득 프로세스(150)는 호출 자원 맵에서 방문자(120)에 대한 모든 보류 및 완료된 자원 요청을 추적한다. 호출 자원 맵은 다음과 같은 맵이다:
resourceURL => { Future }
호출 자원 맵의 resourceURL은 프로토콜이 없는 경우를 제외하고는 절대 URL이다. 절대 URL을 사용하면 페이지에 지정된 경로가 상대 경로인지 절대 경로인지에 관계없이 자원을 재사용할 수 있다. 이 문맥에서 "Future"는 이미 완료되었거나 어떤 미래 시간에 아직 완료되지 않은 컴퓨팅 작업을 나타낸다.
자원 획득 프로세스를 호스팅하는 공동 브라우징 서비스에서 서버에 대한 자원 요청
일부 실시 예에서, 자원 획득 프로세스(150)에 대한 자원 요청은 웹 사이트상의 자원의 원래 위치의 URL을 지정하기 위한 규칙을 갖는다. 자원 요청 URL의 예는 다음과 같다:
/agent/resource/sessionid/[resource path]
예를 들어, URL:
/agent/resource/sessionid/https-otherserver.abc.com/a/b/c/style.CSS
은 절대 URL에서 자원을 요청하는 데 사용된다.
https://otherwserver.abc.com/a/b/c/style.CSS
또는
/resource/sessionid/a/b/c/style.CSS
은 상대 URL에서 자원을 요청하는 데 사용된다:
a/b/c/style.CSS
여기에서 URL은 방문자 브라우저(125)의 현재 페이지에 상대적인 것으로 자원 획득 프로세스(150)에 의해 해석된다.
일부 실시 예에서, 에이전트 브라우저(140)가 요청에서 공동 브라우징 세션 ID에 의해 지정된 공동 브라우징 세션(132)에 대한 유효한 자격 증명을 제공하지 않는 경우, 자원 요청은 http 상태(401)(비승인)으로 거부된다. 일부 실시 예에서, 자원 획득 프로세스(150)는 다음과 같이 자원 경로를 파일 이름에 매핑한다:
cacheroot/sessionid/[resource path]
여기서 cacheroot는 캐시된 파일의 루트 디렉토리를 나타내는 자원 획득 프로세스의 구성 설정이다. 일부 실시 예에서, 유효한 경로 이름을 생성하기 위해 파일 URL의 특정 문자가 밑줄 표시로 대체될 것이다.
에이전트 브라우저(140)로부터 자원 요청이 수신 될 때, 자원이 파일 캐시에서 발견되지 않으면 자원 획득 프로세스(150)는 호출 자원 맵에서 자원을 조회한다. 일부 실시 예에서, 한 세션의 맥락에서 자원 획득 프로세스에 의해 검색되는 파일은 다른 세션과 관련하여 자원 획득 프로세스에 의해 캐시되고 사용될 수 있다. 따라서, 일부 실시 예에서 자원 획득 프로세스는 먼저 URL-future 맵을 보기 전에 자원이 캐시되었는지 확인한다. 자원 획득 프로세스(150)에 의해 자원이 요청되지 않은 경우, 자원 획득 프로세스(150)는 이들 요청을 방문자 브라우저(125)에 다음과 같이 전달한다:
message type: resreq
message payload: { URL : [absolute/relative URL as determined by resource path] }
자원 획득 프로세스(150)는 또한 자원에 대한 엔트리를 호출 자원 맵에 추가한다.
자원 획득 프로세스(150)에 의해 이전에 자원이 요청되었지만 자원 요청이 아직 이행되지 않은 경우, 자원 획득 프로세스(150)는 자원을 기다린다.
자원 요청이 이미 완료된 경우(또는 완료시), 성공적으로 검색되면, 자원 획득 프로세스(150)는 파일을 전송함으로써 요청에 응답한다. 일부 실시 예에서, 파일은 어쨌든 공동 브라우징 세션(132)의 길이 동안만 유효하기 때문에, 에이전트에 대한 응답에 포함된 캐시 헤더는 파일을 무기한 캐시하도록 설정된다. 자원의 컨텐츠 유형 헤더는 웹 서버(110)가 방문자 브라우저(125) 또는 자원 획득 프로세스에 자원을 제공할 때 원래 반환한 컨텐츠 유형으로 설정된다("자원 요청의 방문자 처리" 참조). 방문자 브라우저(125) 또는 자원 획득 프로세스가 자원을 검색할 때 수신하는 http 상태 코드가 무엇이든, 그 http 상태 코드는 에이전트 브라우저(140)로 반환된다.
일부 실시 예에서, 악성 자바스크립트가 에이전트 브라우저(140)에서 실행되는 것을 방지하기 위해, 콘텐츠 보안 정책(CSP) 헤더가 사용되며 공동 브라우징 서비스는 에이전트 브라우저(140)에 제공되는 모든 페이지에 CSP 헤더를 포함한다. CSP 헤더는 자바스크립트 파일이 검색될 수 있는 도메인을 (예를 들어, 공동 브라우저 서비스(130)로)을 제한하고, 페이지의 인라인 자바스크립트가 실행되는 것을 또한 방지한다. 따라서 CSP 호환 브라우저는 허용된 도메인 목록에서 받은 소스 파일에 로드된 스크립트만 실행하고 다른 모든 스크립트는 무시한다. 따라서 방문자(120)가 에이전트의 브라우저(140)를 공격하려는 시도로 악성 스크립트를 보내거나, 웹 사이트(115)에서 악성 스크립트가 다운로드된 경우에도, 악성 스크립트는 에이전트 브라우저(140)에서 실행되지 않는다. 또한 자원 획득 프로세스는 자바스크립트 자원에 대한 모든 요청에 401 오류로 응답한다.
방문자 자원 요청 처리
방문자 브라우저(125)는 웹 사이트(115)에 지정된 자원에 대한 XMLHttpRequest(XHR) 요청을 함으로써(화살표 280) 자원 요청을 처리하고, 응답을 수신하면(화살표 285), 요청된 자원을 /visitor/UR에서 Cobrowse 서비스에 대한 사후 요청을 사용하여 자원 획득 프로세스(150)(화살표 270)에 업로드한다. 일부 실시 예에서, 방문자 브라우저(125)는 게시물과 함께 http 상태 코드 및 콘텐츠 유형을 전송하고, 자원 획득 프로세스(150)는 이 정보를 추적한다.
CORS 및 크리덴셜
일부 실시 예에서, 자원에 액세스하기 위해 웹 서버(110)에 의해 크리덴셜이 필요한 경우, 방문자 브라우저(125)로부터 웹 서버(110)로의 자원에 대한 XMLHttpRequest(XHR) 초기 요청(화살표 280)이 크리덴셜을 포함한다. 일부 경우에, 웹 서버(110)는 크리덴셜을 필요로하지 않으며 이를 포함하는 교차 출처 요청을 허용하지 않는다. 이 경우 방문자 브라우저(125)는 자바스크립트 엔진이 아닌 콘솔에 오류를 보고할 수 있다. 따라서 XHR 요청은 예를 들어 네트워크 연결이 중단된 것처럼 단순히 실패한 것으로 보인다. 이 때문에 자원에 대한 XHR 요청이 http 응답없이 실패할 때마다, 방문자 브라우저(125)는 크리덴셜 없이 웹 서버(110)상에서 요청을 재시도한다(화살표 280에서 요청을 재전송).
자원 획득 프로세스 업로드 자원 요청 핸들러
일부 실시 예에서, 자원 획득 프로세스(150)는 업로드 자원(UR) 요청 핸들러를 갖는다. 방문자 브라우저는 공동 브라우징 서비스의 URL에서 자원 업로드 핸들러에 POST 요청을 보낸다: /visitor/UR/ssnid = [session id &] url = [resource url] & httpstatus = [http status code] 여기서 자원 URL은 자원의 URL이고 http 상태 코드는 방문자의 자원 요청에 대한 응답으로 웹 사이트에서 반환한 상태 코드이다. 게시물의 본문에는 자원 파일 컨텐츠가 포함된다. 방문자 브라우저는 방문자의 자원 요청에 대한 응답의 콘텐츠 유형 헤더에 따라 이 요청에 콘텐츠 유형 헤더를 설정한다. 방문자 브라우저(125)가 자원을 성공적으로 업로드하면, UR 요청 핸들러는 위에서 설명한 파일 경로 매핑에 대한 자원 경로를 사용하여 게시물 본문을 파일에 저장한다.
UR 요청 핸들러는 호출 자원 맵에서 자원을 찾고 그 결과를 자원 콘텐츠 유형에 (UR 요청의 콘텐츠 유형 헤더에서 추출됨) 및 http 상태 (httpstatus 쿼리 문자열 매개변수에서 추출됨)에 설정하여 Future를 해결한다. 자원 획득 프로세스(150)는 자원 요청에 응답하기 위해 콘텐츠 유형 및 http 상태를 필요로 한다.
방문자 브라우저(125)가 잠재적으로 CORS 오류 (httpstatus 0으로 표시됨)로 인해 자원을 검색하지 못한 경우, 자원 획득 프로세스(150)는 자원 자체를 검색하려고 시도한다. 일부 실시 예에서, 자원 획득 프로세스(150)는 방문자 브라우저(125)에 대한 요청이 실패할 때까지 먼저 기다리지 않고 동시에 웹 서버(110)와 방문자 브라우저(125) 모두로부터 자원을 검색하려고 시도한다.
타임아웃
방문자 브라우저(125)는 일반적으로 실패 상태인 경우에도, UR 요청 핸들러에 게시함으로써 자원 요청에 응답해야 한다. 그러나, (1) 자바스크립트 오류 또는 네트워크 문제가 발생하여 해당 프로세스가 예상대로 완료되지 않는 경우, 또는 (2) 방문자 브라우저(125)가 자원을 검색하고 업로드하기 전에 탐색하는 경우, 자원 획득 프로세스(150)는 에이전트 브라우저(140)가 응답을 무기한 대기하는 상태로 두어서는 안된다. 예를 들어, Chrome 및 가능한 다른 브라우저는 웹 서버(110)가 자원 요청에 대한 일종의 응답을 제공할 때까지 페이지를 렌더링하지 않을 것이다. 따라서, 방문자 브라우저(125)가 제한 시간 내에 자원 요청에 응답하지 않고, 웹 서버(110)가 제한 시간 내에 자원에 응답하지 못하는 경우, 자원 획득 프로세스(150)는 http 상태(504)(게이트웨이 타임아웃)를 에이전트 브라우저(140)에 회신한다. 방문자 브라우저(125)가 탐색하면, 자원 요청에 대한 모든 미결 Future가 취소된다.
Iframe
iframe 내에서 참조되는 자원에 대한 요청은 프레임과 관련된 "프레임 콜" (즉, 서브 세션)에 의해 처리된다. 그러나, iframe에서 자원을 공유할 수 있다는 사실을 활용하기 위해 최상위 호출에는 하나의 호출 자원 맵만 있다.
프레임 URL
iframe 자원을 제공하기 위해, 일부 실시 예에서, 프레임 자원 획득 프로세스 URL(프레임 경로)이 정의된다. 각 프레임 자원 획득 프로세스 URL은 고유하게 iframe에 매핑된다. 일부 실시 예에서, 프레임 자원 획득 프로세스 URL은 iframe href로부터 유도되므로, iframe이 방문자(120) 측에서 다시 인스턴스화 될 때 변경되지 않는다. 프레임 자원 획득 프로세스 URL의 불변성은 에이전트 브라우저(140) 및 자원 획득 프로세스(150) 모두가 iframe에서 참조되는 캐시된 자원을 재사용할 수 있도록 한다.
iframe href에 고유하게 매핑되는 한, 프레임 자원 획득 프로세스 URL은 무엇이든 될 수 있다. 방문자 공동 브라우징 자바스크립트(145)는 프레임 자원 획득 프로세스 URL을 선택하고 이것을 프레임이 DOM을 처음 업로드할 때 자원 획득 프로세스(150)로 전송한다.
방문자 브라우저(125)가 에이전트 브라우저(140)로 DOM과 함께 전송할 <base> 태그를 구성하면, 방문자 공동 브라우징 자바스크립트(145)가 iframe에서 실행하는 경우, 방문자 브라우저(125)는 에이전트로 전송되는 기본 태그에/cobrowse-[frame_resource_acquisition_process_URL]을 추가한다. iframe 내의 자원에 대한 에이전트 브라우저(140)로부터의 모든 자원 요청은 프레임 자원 획득 프로세스 URL을 포함할 것이다.
프레임 자원에 대한 요청 처리
iframe이 상위 도메인과 다른 도메인에 있을 수 있기 때문에, 자원을 참조하는 iframe만이 자원 요청을 처리할 수 있다는 점에 유의한다. 상위 도메인이 자원을 요청했다면, 이것은 "교차 도메인" 요청일 수 있어 실패할 수 있다.
자원 획득 프로세스(150)가 자원 요청을 수신하면, URL에 프레임 자원 획득 프로세스 URL이 포함된 경우, 자원 획득 프로세스(150)는 프레임 호출을 식별하기 위해 프레임 자원 획득 프로세스 URL을 사용한다. 그 다음, 자원 획득 프로세스(150)는 방문자 브라우저(125)상의 대응 iframe에 자원 요청을 발행한다. 방문자 브라우저(125)는 상대 URL인 경우, 해당 iframe의 location.href에 상대적인, 자원을 요청할 수 있다. 방문자 브라우저(125)가 자원을 수신하고 자원 획득 프로세스(150)에 자원을 업로드하면, 방문자 브라우저(125)는 /visitor/UR URL에서 frame_resource_acquisition_process_url을 추가의 frameid 쿼리 문자열 매개변수로 포함하므로 자원 획득 프로세스(150)는 자원이 속하는 프레임을 식별할 수 있다. 일부 실시 예에서, 자원 획득 프로세스(150)는 자원 획득 프로세스(150)가 웹 사이트(115) 및 방문자 브라우저(125) 모두로부터 동시에 이들을 요청한다는 점에서, 최상위 자원과 동일하게 iframe 자원을 처리한다.
프레임 스타일시트의 상대 URL
iframe 내의 스타일시트가 상대 URL을 포함하는 경우, 상대 자원에 대한 자원 획득 프로세스(150)에 대한 에이전트 브라우저(140)의 요청은 다음과 같다:
/agent/resource/ssnid/frame_resource_acquisition_process_url/path-to-stylesheet/relative-url-for-resource
iframe 내의 자원은 디렉토리 ssnid/frame_resource_acquisition_process_url 하에서 파일 캐시에 저장된다.
방문자 탐색
일부 구현 예에서, 방문자 브라우저(125)가 미해결 자원 요청을 이행하기 전에 새 페이지로 탐색하는 경우, 새 페이지의 공동 브라우징 자바스크립트는 웹 사이트(115)로부터 이러한 자원을 다운로드하고 이를 자원 획득 프로세스(150)에 업로드하는 작업을 인수해야 한다. 이를 용이하게 하기 위해, 자원 획득 프로세스(150)는 임의의 미해결 자원 요청을 세션 상태에 추가하고 이들이 충족되면 제거한다. 방문자 공동 브라우징 자바스크립트(145)는 페이지 로드시, 처리되지 않은 자원 요청을 수행한다. 다른 구체 예에서, 방문자 브라우저(125)가 미해결 자원 요청을 이행하기 전에 새 페이지를 탐색하면, 자원 획득 프로세스(150)는 미해결 요청을 취소한다. 탐색 후, 새 페이지가 공동 브라우저 자바스크립트로 스크립팅되거나 방문자 공동 브라우징 자바스크립트(145)가 영구적인 경우(쿠키, 확장자), 새 페이지의 자원에 대해 전체 프로세스가 다시 시작된다.
여러 에이전트
공동 브라우징 세션(132)에 여러 에이전트(135)가 있는 경우, 복수의 에이전트(135)의 에이전트 브라우저(140) 각각에 의해서 동일한 자원에 대한 자원 획득 프로세스(150)에 대해 복수의 요청이 행해지게 된다. 자원 획득 프로세스(150)는 단 하나의 요청(화살표 255)이 방문자 브라우저(125)로 전달되는 것을 보장해야 한다. 따라서, 자원 획득 프로세스(150)는 방문자 브라우저(125)에 동일한 자원에 대한 새로운 요청을 발행하기 전에 자원에 대한 기존의 미해결 요청에 대한 공동 브라우징 세션(132) 상태를 확인한다.
바이너리 파일
특정 브라우저는 XMLHttpRequest(XHR) 요청으로 바이너리 파일을 다운로드하거나 업로드하는 것을 지원하지 않을 수 있다. XHR 요청은 웹 브라우저와 웹 서버간에 데이터를 전송하는 메서드인 객체 형태의 API이다. 따라서 방문자 브라우저(125)가 이러한 브라우저 중 하나를 사용하여 구현되면, 한 가지 가능한 해결 방법은 사용자 지정 인코딩을 사용하여 바이너리 파일을 문자열로 다운로드하는 것이다. 그 다음 문자열은 자원 획득 프로세스(150)에서 바이너리로 다시 디코딩된다.
사전 캐싱
방문자 브라우저(125)로부터 자원을 획득하는 데 시간이 걸릴 수 있으므로, 일부 실시 예에서, 방문자 브라우저(125)는 에이전트 브라우저(140)가 자원 획득 프로세스(150)를 통해 이러한 자원에 대한 요청을 발행하기를 기다리는 대신에, 공동 브라우징 세션(132)이 처음 시작되면 페이지에서 CSS 파일을 스캔하여 이를 미리 업로드한다. CSS 파일은 전체 페이지 레이아웃에 영향을 미치므로 폰트 및 이미지와 비교하여 페이지를 정확하게 렌더링하는 데 중요하다. 자원 획득 프로세스(150)에서 CSS 파일을 미리 캐싱함으로써, 자원 획득 프로세스(150)는 공동 브라우징 세션(132)에서 요청될 때 이들 자원을 에이전트 브라우저(140)에 보다 신속하게 제공할 수 있다.
본 명세서에 설명된 방법은 컴퓨터와 같은 전자 장치의 CPU에 포함된 것과 같은 제어 로직에서 실행되도록 구성된 소프트웨어로 구현될 수 있다. 본 명세서에서 설명된 기능은 비 일시적 유형의 컴퓨터 판독 가능 매체에 저장되는 프로그램 명령 세트로 구현될 수 있다. 이러한 방식으로 구현될 때, 컴퓨터 프로그램은 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 위에서 설명된 기능을 구현하는 방법을 수행하게 하는 명령 세트를 포함한다. 프로그래밍 가능 로직은 읽기 전용 메모리 칩, 컴퓨터 메모리, 디스크 또는 기타 저장 매체와 같은 비 일시적 유형의 컴퓨터 판독 가능 매체에 임시 또는 영구적으로 고정될 수 있다. 소프트웨어로 구현되는 것 외에도, 본 명세서에서 설명된 로직은 전계 프로그램 가능한 게이트 어레이(FPGA) 또는 마이크로 프로세서와 같은 프로그래밍 가능 논리 장치 또는 이들의 조합을 포함한 기타 장치와 함께 사용되는, 개별 구성 요소, 집적 회로, 프로그램 가능 논리를 사용하여 구현될 수 있다. 이러한 모든 실시 예는 본 발명의 범위 내에 포함되도록 의도된다.
본 발명의 사상 및 범위 내에서 도면에 도시되고 명세서에 기재된 실시 예의 다양한 변경 및 수정이 가능하다. 따라서, 상기 설명에 포함되고 첨부된 도면에 도시된 모든 사항은 제한적인 의미가 아닌 예시적인 의미로 해석되어야 한다.

Claims (17)

  1. 공동 브라우징 세션에서 독점 자원에 액세스하는 방법을 구현하기 위한 컴퓨터 프로그램이 저장된 비 일시적 유형의 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 컴퓨터 프로그램은:
    제 1 브라우저의 콘텐츠를 기술하는 DOM을 갖는 상기 제 1 브라우저, - 상기 DOM은 제 1 웹 사이트를 가리키는 URL을 갖는 객체를 포함함 - ; 및
    상기 제 1 브라우저에 로드된 공동 브라우징 자바스크립트를 포함하고,
    상기 공동 브라우징 자바스크립트는 상기 자원 URL의 제 1 서브세트가 상기 제 1 웹 사이트 대신에 자원 획득 프로세스를 가리키도록 변환하여 수정된 DOM을 생성하도록 구성되고, 상기 공동 브라우징 자바스크립트는 상기 제 1 브라우저의 상기 수정된 DOM을 공동 브라우징 세션의 공동 브라우징 서버로 전달하도록 더욱 구성되는,
    비 일시적 유형의 컴퓨터 판독 가능 저장 매체.
  2. 제 1 항에 있어서,
    상기 URL의 상기 제 1 서브세트는 이미지, 폰트 및 케스케이딩 스타일 시트(CSS)와 관련된 URL인,
    비 일시적 유형의 컴퓨터 판독 가능 저장 매체.
  3. 제 1 항에 있어서,
    상기 자원 획득 프로세스의 URL은 상기 공동 브라우징 서버에 의해 상기 공동 브라우징 세션의 상기 자바스크립트에 제공되고, 상기 자바스크립트는 상기 자원 URL의 상기 제 1 서브세트가 상기 자원 획득 프로세스의 상기 URL을 가리키게 변환하도록 구성되는,
    비 일시적 유형의 컴퓨터 판독 가능 저장 매체.
  4. 제 1 항에 있어서,
    상기 자원 획득 프로세스의 상기 URL은 상기 공동 브라우징 세션을 호스팅하기 위해 상기 공동 브라우징 서비스에 의해 식별된 공동 브라우징 서버의 ID를 기반으로 상기 공동 브라우징 서버에 의해 생성되고, 상기 자바스크립트는 상기 자원 URL의 제 상기 1 서브세트가 상기 자원 획득 프로세스의 상기 URL을 가리키게 변환하도록 구성되는,
    비 일시적 유형의 컴퓨터 판독 가능 저장 매체.
  5. 제 1 항에 있어서,
    상기 공동 브라우징 자바스크립트는 상기 자원 획득 프로세스에서 상기 URL의 상기 제 1 서브세트와 관련되는 자원 요청을 수신하도록 추가로 구성되고, 상기 자원 요청에 응답하도록 구성되는,
    비 일시적 유형의 컴퓨터 판독 가능 저장 매체.
  6. 제 5 항에 있어서,
    상기 공동 브라우징 자바스크립트는 상기 웹 사이트에서 상기 자원을 요청하여 상기 자원 요청을 처리하도록 추가로 구성되는,
    비 일시적 유형의 컴퓨터 판독 가능 저장 매체.
  7. 공동 브라우징 세션에서 독점 자원을 제공하기 위한 공동 브라우징 시스템에 있어서,
    방문자 컴퓨터, 에이전트 컴퓨터, 및 상기 방문자 컴퓨터와 에이전트 컴퓨터 사이의 공동 브라우징 서비스를 포함하고,
    상기 방문자 컴퓨터는 제 1 브라우저가 인스턴스화되어 있으며, 상기 제 1 브라우저는 상기 제 1 브라우저의 콘텐츠를 기술하는 DOM을 가지며, 상기 DOM은 URL이 제 1 웹 사이트를 가리키는 URL을 갖는 객체를 포함하고, 상기 제 1 브라우저는 공동 브라우징 자바스크립트가 내부에 로딩되어 있고, 상기 공동 브라우징 자바스크립트는 공동 브라우징 세션에서 상기 공동 브라우징 서비스를 통해 상기 제 1 브라우저의 상기 DOM을 복사하여 상기 제 1 브라우저의 상기 DOM을 상기 에이전트 컴퓨터로 전달하도록 구성되고,
    상기 공동 브라우징 서비스는 자원 획득 프로세스가 인스턴스화되어 있으며,
    상기 에이전트 컴퓨터는 제 2 브라우저가 인스턴스화되어 있으며, 상기 제 2 브라우저는 상기 공동 브라우징 세션에서 수신된 상기 제 1 브라우저의 상기 DOM을 로드하고 상기 자원 획득 프로세스로부터 상기 DOM에서 참조된 상기 객체 중 적어도 일부를 요청하도록 구성되는,
    공동 브라우징 시스템.
  8. 제 7 항에 있어서,
    상기 방문자 브라우저의 상기 공동 브라우징 자바스크립트는 상기 제 1 브라우저의 상기 DOM의 상기 URL의 제 1 서브세트를 변환하여, 상기 URL의 제 1 서브세트가 상기 공동 브라우저 세션에서 상기 공동 브라우징 서버로 상기 DOM을 전송하기 전에 상기 제 1 웹 사이트 대신에 상기 자원 획득 프로세스를 가리키게 하도록 구성되는,
    공동 브라우징 시스템.
  9. 제 8 항에 있어서,
    상기 URL의 제 1 서브세트는 이미지, 폰트 및 캐스케이딩 스타일 시트(CSS)와 관련된 URL인,
    공동 브라우징 시스템.
  10. 제 8 항에 있어서,
    상기 자원 획득 프로세스의 URL은 상기 공동 브라우징 서비스에 의해 상기 공동 브라우징 세션의 상기 자바스크립트에 제공되고, 상기 자바스크립트는 상기 자원 URL의 상기 제 1 서브 세트가 상기 자원 획득 프로세스의 상기 URL을 가리키게 변환하도록 구성되는,
    공동 브라우징 시스템.
  11. 제 8 항에 있어서,
    상기 자원 획득 프로세스의 상기 URL은 상기 공동 브라우징 세션을 호스팅하기 위해 상기 공동 브라우징 서비스에 의해 식별된 공동 브라우징 서버의 ID를 기반으로 상기 공동 브라우징 서버에 의해 생성되고, 상기 자바스크립트는 상기 자원 URL의 상기 제 1 서브 세트가 상기 자원 획득 프로세스의 상기 URL을 가리키게 변환하도록 구성되는,
    공동 브라우징 시스템.
  12. 제 8 항에 있어서,
    상기 공동 브라우징 자바스크립트는 상기 자원 획득 프로세스로부터 상기 URL의 상기 제 1 서브세트와 관련된 자원 요청을 수신하도록 추가로 구성되고 상기 요청된 자원을 상기 자원 획득 프로세스에 제공함으로써 상기 자원 요청에 응답하도록 구성되는,
    공동 브라우징 시스템.
  13. 제 12 항에 있어서,
    상기 공동 브라우저 자바스크립트는 상기 웹 사이트에서 상기 자원을 요청하여 상기 자원 요청을 처리하도록 추가로 구성되는,
    공동 브라우징 시스템.
  14. 제 7 항에 있어서,
    상기 공동 브라우징 서비스는 상기 제 1 브라우저의 상기 DOM의 상기 URL의 제 1 서브세트를 변환하여 상기 제 1 브라우저에서 상기 에이전트 컴퓨터로 상기 DOM을 전송하는 것과 관련하여 상기 URL의 상기 제 1 서브세트가 상기 제 1 웹 사이트 대신에 상기 자원 획득 프로세스를 가리키도록 구성된, 프로세스가 인스턴스화되어 있어 있는,
    공동 브라우징 시스템.
  15. 제 7 항에 있어서,
    상기 에이전트 컴퓨터는 상기 제 1 브라우저의 상기 DOM의 상기 URL의 제 1 서브세트를 변환하여 상기 URL의 상기 제 1 서브세트가 상기 제 1 웹 사이트 대신에 상기 자원 획득 프로세스를 가리키도록 구성된 프로세스가 인스턴트화되어 있는,
    공동 브라우징 시스템.
  16. 공동 브라우징 세션에 포함할 독점 자원을 획득하는 방법에 있어서,
    제 1 브라우저로부터 자원 획득 프로세스에 의해 제 1 자원 요청을 수신하는 단계 - 상기 자원 요청은 상기 자원 획득 프로세스를 식별하는 URL을 가지고, 웹 사이트와 관련된 제 1 자원으로 확인 가능한 네트워크 주소를 추가로 지정함 - ;
    상기 웹 사이트로부터 로드된 웹 페이지를 갖는 제 2 브라우저에 상기 제 1 자원에 대한 제 2 자원 요청을 발행하는 단계;
    상기 웹 사이트에 상기 제 1 자원에 대한 제 3 자원 요청을 동시에 발행하는 단계; 및
    상기 제 1 자원이 상기 제 2 브라우저 또는 상기 웹 사이트에서 수신되면 상기 제 1 자원으로 상기 제 1 자원 요청에 응답하는 단계를 포함하는,
    방법.
  17. 제 16 항에 있어서,
    제 1 자원은 제 2 브라우저에 의해 로드된 상기 웹 페이지의 이미지, 폰트 또는 케스케이딩 스타일 시트(CSS)와 연관되는,
    방법.
KR1020217015387A 2018-11-21 2019-11-18 공동 브라우징 세션에서 독점 자원에 액세스하기 위한 방법 및 장치 KR20210157389A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862770493P 2018-11-21 2018-11-21
US62/770,493 2018-11-21
PCT/US2019/061974 WO2020106612A1 (en) 2018-11-21 2019-11-18 Method and apparatus for accessing proprietary resources on a co-browse session

Publications (1)

Publication Number Publication Date
KR20210157389A true KR20210157389A (ko) 2021-12-28

Family

ID=70727643

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217015387A KR20210157389A (ko) 2018-11-21 2019-11-18 공동 브라우징 세션에서 독점 자원에 액세스하기 위한 방법 및 장치

Country Status (6)

Country Link
US (2) US11269582B2 (ko)
EP (1) EP3850503A4 (ko)
KR (1) KR20210157389A (ko)
CN (1) CN112997173A (ko)
AU (1) AU2019384114A1 (ko)
WO (1) WO2020106612A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11770375B2 (en) * 2020-11-12 2023-09-26 Kindli, Inc. Methods and apparatus for communication

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149776B1 (en) * 2001-08-31 2006-12-12 Oracle International Corp. System and method for real-time co-browsing
US20090037517A1 (en) * 2007-08-02 2009-02-05 Randall Wayne Frei Method and system to share content between web clients
WO2009066233A2 (en) * 2007-11-23 2009-05-28 Koninklijke Philips Electronics N.V. Co-browsing (java) scripted html documents
US8843816B2 (en) * 2008-04-25 2014-09-23 Microsoft Corporation Document collaboration by transforming and reflecting a document object model
US20100082747A1 (en) * 2008-09-29 2010-04-01 College Of William & Mary Real-time collaborative browsing
US8438648B2 (en) * 2010-02-16 2013-05-07 Celartem, Inc. Preventing unauthorized font linking
US9171087B2 (en) * 2010-05-20 2015-10-27 Samesurf, Inc. Method and apparatus for the implementation of a real-time, sharable browsing experience on a host device
EP2847686B1 (en) * 2012-05-07 2019-10-30 Digital Guardian, Inc. Enhanced document and event mirroring for accessing content
US10067730B2 (en) * 2012-07-10 2018-09-04 Recursive Labs, Inc. Systems and methods for enabling replay of internet co-browsing
US10827011B2 (en) * 2012-07-19 2020-11-03 Glance Networks, Inc. Presence enhanced co-browsing customer support
KR102197248B1 (ko) * 2012-07-19 2020-12-31 글랜스 네트웍스, 인크 다른 형태의 정보 공유를 통한 코브라우징의 통합
US9323730B2 (en) 2012-09-05 2016-04-26 Hbr Labs Llc Platform and method for real-time synchronized co-browsing of web pages
US9160696B2 (en) * 2013-06-19 2015-10-13 Twilio, Inc. System for transforming media resource into destination device compatible messaging format
US9866655B2 (en) * 2014-03-31 2018-01-09 Akamai Technologies, Inc. Server initiated multipath content delivery

Also Published As

Publication number Publication date
CN112997173A (zh) 2021-06-18
EP3850503A1 (en) 2021-07-21
AU2019384114A1 (en) 2021-05-20
WO2020106612A1 (en) 2020-05-28
US11269582B2 (en) 2022-03-08
US11645033B2 (en) 2023-05-09
EP3850503A4 (en) 2022-06-15
US20200159818A1 (en) 2020-05-21
US20220188060A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
US11729294B2 (en) Processing DNS queries to identify pre-processing information
US10798203B2 (en) Method and apparatus for reducing network resource transmission size using delta compression
US10511567B2 (en) Network resource identification
US9451046B2 (en) Managing CDN registration by a storage provider
CN102929984B (zh) 失效网址搜索方法和装置
US10911561B2 (en) Method and network node for caching web content
CN102945259B (zh) 一种基于收藏夹的搜索方法和搜索装置
CN101136834B (zh) 一种基于ssl vpn的链接改写方法和设备
US11645033B2 (en) Method and apparatus for accessing proprietary resources on a Co-Browse session
KR20090103552A (ko) 컨텐츠 캐싱을 이용한 웹 페이지 및 웹 컨텐츠 제공 시스템및 방법
EP1052827A2 (en) Dynamic resource modification in a communication network
CN110224973B (zh) 基于编程游戏的多服务端并行实现方法、电子设备及介质
JP2005267435A (ja) キャッシュ処理プログラムおよびキャッシュ処理装置
KR20170097459A (ko) 식별자 및 위치자가 분리된 환경에서의 웹 정보 전송을 위한 통신장치, 네트워크 장치 및 그 통신방법
KR20080027013A (ko) 통신시스템의 하이퍼텍스트 통신규칙 요청 메시지를 줄이는장치 및 방법