KR102156305B1 - 제한된 컴퓨터 환경에서의 교차-출처 통신 - Google Patents

제한된 컴퓨터 환경에서의 교차-출처 통신 Download PDF

Info

Publication number
KR102156305B1
KR102156305B1 KR1020197003841A KR20197003841A KR102156305B1 KR 102156305 B1 KR102156305 B1 KR 102156305B1 KR 1020197003841 A KR1020197003841 A KR 1020197003841A KR 20197003841 A KR20197003841 A KR 20197003841A KR 102156305 B1 KR102156305 B1 KR 102156305B1
Authority
KR
South Korea
Prior art keywords
execution context
execution
context
channel
unidirectional
Prior art date
Application number
KR1020197003841A
Other languages
English (en)
Other versions
KR20190028479A (ko
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 KR20190028479A publication Critical patent/KR20190028479A/ko
Application granted granted Critical
Publication of KR102156305B1 publication Critical patent/KR102156305B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2119Authenticating web pages, e.g. with suspicious links

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 명세서는 컴퓨팅 시스템상의 제1 실행 컨텍스트와 컴퓨팅 시스템상의 제2 실행 컨텍스트 사이에 데이터를 전달하는 기술을 개시한다. 상기 제1 실행 컨텍스트는 제1 출처로부터의 컨텐츠를 실행할 수 있고, 제2 실행 컨텍스트는 제1 출처와 상이한 제2 출처로부터의 컨텐츠를 실행할 수 있고, 상기 제1 실행 컨텍스트 및 제2 실행 컨텍스트는 컴퓨팅 시스템에 의해 구현된 동일-출처 정책의 결과로서 각각 서로의 데이터에 액세스하는 것이 제한될 수 있다. 이 방법은 제1 실행 컨텍스트와 제2 실행 컨텍스트 사이에 양방향 통신 채널을 확립하는 단계를 포함할 수 있다.

Description

제한된 컴퓨터 환경에서의 교차-출처 통신
본 발명은 일반적으로 웹 브라우저의 서로 다른 윈도우 사이와 같은 컴퓨팅 시스템상의 개별 실행 컨텍스트 사이에 통신하는 기술에 관한 것이다.
서버 및 컴퓨팅 디바이스의 하드웨어 및 소프트웨어 성능이 발전함에 따라 점점 복잡한 웹 페이지, 애플리케이션 인터페이스 및 기타 전자 문서들이 만들어지고 있다. 예를 들어 일부 웹 페이지는 다수의 소스의 컨텐츠를 통합하여 사용자가 다른 웹 사이트를 반복적으로 탐색하고 기본 웹 페이지로 돌아갈 필요성을 줄여 준다. 예로써, 웹 페이지는 웹 페이지의 주요 컨텐츠를 제공하는 최상위 문서와 그 최상위 문서에 (지도 서버 또는 네비게이션 서버의 컨텐츠와 같은) 다른 컨텐츠를 포함시키는 하나 이상의 iFrame을 포함할 수 있다. 일부 경우, 임베디드 문서들은 그들의 최상위 문서가 획득된 도메인과 다른 도메인에서 가져온 것이므로 다른 출처(origin)를 가지고 있다고 한다.
다른 출처들의 문서는 컴퓨팅 시스템에 보안 위협을 제기할 수 있다. 예를 들어, 제1 출처의 문서는 예를 들어 다른 문서에 악성 코드를 추가 주입하거나, 다른 문서의 문서 객체 모델(DOM)에 대한 검사 또는 무단 변경을 수행하거나, 다른 문서에서 개인 정보를 긁어 모으거나 또는 다른 문서와의 사용자 상호 작용을 모니터링함으로써 제2 출처의 문서를 손상시키도록 설계된 악의적인 프로그램을 포함할 수 있다. 이와 같이, 다른 출처들의 문서를 일반적으로 실행하는 웹 브라우저 및 기타 애플리케이션은 다양한 형태의 교차-출처(cross-origin) 문서 상호 작용을 제한하는 동일한 출처 정책을 구현하였다. 예를 들어, 브라우저는 제1 윈도우에 디스플레이된 제1 도메인의 웹 페이지가 제2 윈도우에 디스플레이된 제2 도메인의 다른 웹 페이지와 관련된 데이터에 액세스하는 것을 방지할 수 있다. 서로 다른 소스의 데이터 무결성과 기밀성을 보호하기 위해 동일-출처 정책들이 개발되었다.
본 명세서는 교차-출처 실행 컨텍스트 사이에 보안 통신 채널을 제공하기 위한 컴퓨터 기반 시스템, 방법, 디바이스 및 기타 기술들에 대해 설명한다. 일부 구현예에서, 교차-출처 실행 컨텍스트들 사이에 양방향 통신 채널이 적용되어, 주(primary) 웹 페이지와 같은 최상위 레벨 문서 및 상기 주 웹 페이지에 중첩된 하나 이상의 iFrame에 디스플레이된 부(secondary) 컨텐츠를 포함하는 하나 이상의 내장(embedded) 문서에 대한 통일된 사용자 인터페이스를 생성할 수 있다.
본 명세서에 개시된 주제의 일부 구현예들은 컴퓨팅 시스템상의 제1 실행 컨텍스트와 컴퓨팅 시스템상의 제2 실행 컨텍스트 사이에 데이터를 전달하기 위한 컴퓨터 구현 방법을 포함한다. 상기 제1 실행 컨텍스트는 제1 출처의 컨텐츠를 실행할 수 있고, 상기 제1 실행 컨텍스트 및 제2 실행 컨텍스트는 컴퓨팅 시스템에 의해 구현된 동일-출처 정책의 결과로서 각각 서로의 데이터에 액세스하는 것이 제한될 수 있다. 이 방법은 제1 실행 컨텍스트와 제2 실행 컨텍스트 사이에 양방향 통신 채널을 확립하는 단계를 포함할 수 있다. 상기 방법은 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 양방향 통신 채널을 설정하는 단계로서, 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 초기 탐색 메시지를 수신하는 단계와; 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 초기 탐색 메시지에 기초하여 상기 제2 실행 컨텍스트의 식별자를 결정하는 단계와; 상기 제2 실행 컨텍스트의 식별자를 사용하여, 상기 양방향 통신 채널의 제1 단방향 서브 채널을 설정하는 단계와, 상기 제1 단방향 서브 채널은 상기 제1 실행 컨텍스트로부터 상기 제2 실행 컨텍스트로 메시지들을 전달하도록 구성되고; 상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 연결 브로드캐스트 메시지를 수신하는 단계와; 상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 상기 연결 브로드캐스트 메시지에 기초하여 상기 제1 실행 컨텍스트의 식별자를 결정하는 단계와; 그리고 상기 제1 실행 컨텍스트의 식별자를 이용하여, 상기 양방향 통신 채널의 제2 단방향 서브 채널을 설정하는 단계를 포함하고, 상기 제2 단방향 서브 채널은 상기 제2 실행 컨텍스트로부터 상기 제1 실행 컨텍스트로 메시지들을 전달하도록 구성되고; 그리고 상기 양방향 통신 채널을 통해 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 메시지들을 전달하는 단계를 포함할 수 있다.
이러한 구현예 및 다른 구현예는 선택적으로 다음의 기능들 중 하나 이상을 포함 할 수 있다.
상기 동일-출처 정책에 따라, 상기 컴퓨팅 시스템은 상기 제1 출처 및 제2 출처의 전송 프로토콜, 어드레스 또는 포트 번호 중 적어도 하나가 서로 상이하다는 것을 식별하는 것에 응답하여 상기 제2 출처를 상기 제1 출처와 상이한 것으로 분류할 수 있다.
상기 제1 실행 컨텍스트는 상기 제1 출처의 컨텐츠를 제시하도록 구성된 제1 윈도우 객체를 포함하고, 상기 제2 실행 컨텍스트는 상기 제2 출처의 컨텐츠를 제시하도록 구성된 제2 윈도우 객체를 포함할 수 있다.
상기 제1 윈도우 객체에 제시된 컨텐츠는 상기 제1 출처와 관련된 제1 도메인에서 하나 이상의 서버에 의해 호스팅되는 제1 웹 페이지를 포함할 수 있다. 상기 제2 윈도우 객체에 제시된 컨텐츠는 상기 제2 출처와 관련된 제2 도메인에서 하나 이상의 서버들에 의해 호스팅되는 제2 웹 페이지를 포함할 수 있다. 상기 제2 윈도우 객체는 제1 웹 페이지에 내장된 인라인 프레임(iFrame)일 수 있다.
동작들은 상기 컴퓨팅 시스템의 웹 브라우징 애플리케이션으로 상기 제1 실행 컨텍스트 및 상기 제2 실행 컨텍스트를 생성하는 단계를 더 포함할 수 있고, 상기 제1 단방향 서브 채널은 상기 웹 브라우징 어플리케이션의 포스트 메시지(postMessage) 어플리케이션 프로그래밍 인터페이스(API)를 사용하여 상기 제1 실행 컨텍스트로부터 상기 제2 실행 컨텍스트로 메시지들을 전달하도록 구성되고, 상기 제2 단방향 서브 채널은 상기 웹 브라우징 어플리케이션의 상기 포스트 메시지 API를 사용하여 상기 제2 실행 컨텍스트로부터 상기 제1 실행 컨텍스트로 메시지들을 전달하도록 구성된다.
상기 제2 실행 컨텍스트는 상기 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손일 수 있다. 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 초기 탐색 메시지에 기초하여 상기 제2 실행 컨텍스트의 식별자를 결정하는 단계는 상기 초기 탐색 메시지의 소스 식별자 필드의 값에 액세스하는 단계를 포함할 수 있다.
상기 제1 및 제2 단방향 서브 채널을 설정하는 단계 이후에 상기 양방향 통신 채널은, 상기 제2 실행 컨텍스트에서 상기 제1 실행 컨텍스트로 제1 채널 연결 메시지를 전송하는 단계와; 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 제1 채널 연결 메시지를 수신하는 단계와; 상기 제1 채널 연결 메시지를 수신하는 것에 응답하여, 상기 제1 실행 컨텍스트에서 연결 상태인 것으로 상기 양방향 통신 채널을 마킹하는 단계와; 상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로 제2 채널 연결 메시지를 전송하는 단계와; 상기 제2 실행 컨텍스트에서, 상기 제1 실행 컨텍스트로부터 전송된 상기 제2 채널 연결 메시지를 수신하는 단계와; 그리고 상기 제2 채널 연결 메시지를 수신하는 것에 응답하여, 상기 제2 실행 컨텍스트에서 연결 상태인 것으로 상기 양방향 통신 채널을 마킹하는 단계에 의해 검증될 수 있다.
상기 제1 실행 컨텍스트 내의 하나 이상의 서비스는 상기 제1 단방향 서브 채널이 연결 상태에 있음을 식별하는 것에 응답하여 상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로 메시지들을 전달하기 위해 상기 양방향 통신 채널을 사용하도록 구성되고, 상기 제1 실행 컨텍스트 내의 상기 하나 이상의 서비스는 상기 제1 단방향 서브 채널이 비-연결 상태에 있음을 식별하는 것에 응답하여 상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로 메시지들을 전달하기 위해 상기 양방향 통신 채널을 사용하는 대신에 대체 동작들을 수행하도록 구성될 수 있다.
동작들은 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트가 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손인지 여부를 체크함으로써 상기 제1 실행 컨텍스트가 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지의 타겟인지 여부를 결정하는 단계와; 그리고 상기 제2 실행 컨텍스트가 상기 제1 실행 컨텍스트의 자손이라고 식별하는 것에 응답하여, (ⅰ) 상기 제1 실행 컨텍스트가 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지의 타겟인 것으로 결정하고 상기 제1 단방향 서브 채널을 설정하도록 진행하는 단계 및 (ii) 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 상기 제1 단방향 서브 채널을 설정하도록 선택하는 단계를 더 포함할 수 잇다.
동작들은 상기 제1 실행 컨텍스트에서, 상기 제1 출처 이외의 출처의 컨텐츠를 실행하는 제3 실행 컨텍스트로부터 전송된 제2 초기 탐색 메시지를 수신하는 단계와, 상기 제1 실행 컨텍스트와 상기 제3 실행 컨텍스트는 컴퓨팅 시스템에 의해 구현된 동일-출처 정책의 결과로서 서로의 데이터에 액세스하는 것이 각각 제한되며; 상기 제1 실행 컨텍스트에서, 상기 제3 실행 컨텍스트가 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손인지 여부를 체크함으로써 상기 제1 실행 컨텍스트가 상기 제3 실행 컨텍스트로부터의 상기 제2 초기 탐색 메시지의 타겟인지 여부를 결정하는 단계와; 그리고 상기 제3 실행 컨텍스트가 상기 제1 실행 컨텍스트의 자손이 아니라고 식별하는 것에 응답하여, 상기 제1 실행 컨텍스트와 상기 제3 실행 컨텍스트 사이에 통신 채널을 설정하지 않도록 상기 제2 초기 탐색 메시지를 폐기하는 단계를 더 포함할 수 있다.
상기 동작들은 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지가, 상기 초기 탐색 메시지가 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트의 제1 서비스 사이에 제1 채널의 설정을 개시하는 것을 나타내는 제1 토큰을 포함하는지 식별하는 단계와; 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 제2 초기 탐색 메시지를 수신하는 단계와; 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터의 상기 제2 초기 탐색 메시지가, 상기 제2 초기 탐색 메시지가 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트의 제1 서비스와 상이한 상기 제2 실행 컨텍스트의 제1 서비스 사이에 제2 채널의 설정을 개시하는 것을 나타내는 제2 토큰을 포함하는지 식별하는 단계를 더 포함할 수 있다.
동작들은 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 상기 양방향 통신 채널을 설정하는 단계 이후에, 상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 제어 요소와의 사용자 상호 작용을 식별하는 단계와; 그리고 상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 상기 제어 요소와의 사용자 상호 작용을 식별하는 것에 응답하여, 상기 양방향 통신 채널을 통해 상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로, 상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 제어 요소와의 상기 사용자 상호 작용의 표시를 전송하는 단계를 포함할 수 있다.
상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 제어 요소와의 상기 사용자 상호 작용은 상기 제2 실행 컨텍스트에 의해 실행되는 상기 컨텐츠의 프리젠테이션을 숨기거나 닫기 위한 명령을 나타낸다.
본 명세서에 개시된 주제의 일부 구현예는, 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 본 명세서에 기술된 임의의 구현예에 따른 방법을 수행하게 하는 명령들을 저장하는 하나 이상의 컴퓨터 판독 가능 매체를 포함한다.
본 명세서에 개시된 주제의 일부 구현예는 하나 이상의 프로세서 및 하나 이상의 컴퓨터 판독 가능 매체를 포함하는 컴퓨팅 시스템을 포함한다.
본 명세서에 개시된 주제의 일부 구현예는 하나 이상의 프로세서 및 명령들이 인코딩된 하나 이상의 컴퓨터 판독 가능 매체를 포함하는 컴퓨팅 시스템으로서, 상기 명령들은 실행될 때 상기 하나 이상의 프로세서들로 하여금, 제1 출처의 컨텐츠를 실행하는 제1 실행 컨텍스트와; 상기 제1 출처와 상이한 제2 출처의 컨텐츠를 실행하는 제2 실행 컨텍스트와; 보안 애플리케이션에 의해 구현된 동일-출처 정책에 따라 상기 제1 실행 컨텍스트 및 상기 제2 실행 컨텍스트 각각이 서로의 데이터에 액세스하는 것을 제한하는 보안 애플리케이션을 구현하게 한다. 상기 제1 실행 컨텍스트 및 상기 제2 실행 컨텍스트는 동작들을 수행함으로써 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 메시지들을 전달하기 위한 양방향 통신 채널을 설정하도록 구성되고, 상기 동작들은, 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 초기 탐색 메시지를 수신하는 단계와; 상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 초기 탐색 메시지에 기초하여 상기 제2 실행 컨텍스트의 식별자를 결정하는 단계와; 상기 제2 실행 컨텍스트의 식별자를 사용하여, 상기 양방향 통신 채널의 제1 단방향 서브 채널을 설정하는 단계와, 상기 제1 단방향 서브 채널은 상기 제1 실행 컨텍스트로부터 상기 제2 실행 컨텍스트로 메시지들을 전달하도록 구성되고; 상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 연결 브로드캐스트 메시지를 수신하는 단계와; 상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 상기 연결 브로드캐스트 메시지에 기초하여 상기 제1 실행 컨텍스트의 식별자를 결정하는 단계와; 그리고 상기 제1 실행 컨텍스트의 식별자를 이용하여, 상기 양방향 통신 채널의 제2 단방향 서브 채널을 설정하는 단계를 포함하고, 상기 제2 단방향 서브 채널은 상기 제2 실행 컨텍스트로부터 상기 제1 실행 컨텍스트로 메시지들을 전달하도록 구성된다.
본 명세서에 개시된 주제의 구현은, 일부 경우에, 다음 이점들 중 하나 이상을 실현할 수 있다. 동일-출처의 보안 요구 사항을 우회하지 않고 컴퓨터 환경의 실행 컨텍스트들 사이에 교차-출처 통신을 용이하게 하는 통신 채널이 설정될 수 있다. 채널이 하나 이상의 서비스에 의해 안정적으로 사용할 수 있도록 채널은 설정되고 검증될 수 있다. 일부 구현예에서, 교차-출처 통신 채널에 의해 제공되는 통신은 2개 이상의 실행 컨텍스트를 허용하여, 상기 실행 컨텍스트들이 상이한 출처와 연관되어 있더라도 하나의 컨텍스트에서 발생하는 이벤트들이 하나 이상의 다른 컨텍스트에서의 이벤트들을 트리거하거나 영향을 줄 수 있는 통합 인터페이스를 제공할 수 있다. 예를 들어, 사용자 인터페이스의 제1 부분은 웹 페이지의 iFrame에서 제공될 수 있고, 최상위 웹 페이지의 하나 이상의 제어(controls)가 iFrame 내에서 응답을 호출하기 위해 사용자에 의해 선택될 수 있다. 이렇게 하면 사용자가 웹 페이지에서 다른 곳으로 이동(navigate)할 필요가 없어 네트워크 트래픽을 줄일 수 있다. 일부 구현예에서, 본 명세서에 개시된 통신 채널을 설정하는 기술은 교차-출처 실행 컨텍스트가 서로를 탐색하여 채널의 엔드 포인트를 정의할 수 있게 한다. 추가의 특징 및 이점들은 전체 개시 내용에 비추어 당업자에 의해 인식될 것이다.
도 1은 웹 브라우징 애플리케이션의 윈도우에 제시되는 내장 컨텐츠 프레임을 갖는 예시적인 웹 페이지를 도시한다.
도 2는 예시적인 문서 및 내장 컨텐츠 프레임의 블록도를 도시한다.
도 3은 다수의 내장 컨텐츠 프레임을 포함하는 문서의 블록도를 도시한다.
도 4는 동일-출처 정책을 실시하는 환경에서 교차-출처 실행 컨텍스트들 사이에서 양방향 통신 채널을 생성하고 사용하기 위한 예시적인 프로세스의 흐름도이다.
도 5는 교차-출처 실행 컨텍스트들 사이에 양방향 통신 채널을 설정하기 위한 예시적인 프로세스의 활동 영역(swim-lane) 다이어그램을 도시한다.
도 6은 다수의 내장 컨텐츠 프레임을 포함하는 전자 문서에 대한 교차-출처 양방향 통신 채널을 설정하기 위한 예시적인 프로세스의 활동 영역 다이어그램을 도시한다.
도 7은 실행 컨텍스트에서 다수의 서비스에 대한 양방향 통신 채널을 다중화하기 위한 예시적인 프로세스의 활동 영역 다이어그램을 도시한다.
도 8은 본 명세서에 설명된 기술들을 구현하는데 사용될 수 있는 컴퓨팅 디바이스 및 모바일 컴퓨팅 디바이스의 예를 도시한다
다양한 도면에서 동일한 참조 부호는 동일한 요소를 나타낸다.
본 명세서는 교차-출처 실행 컨텍스트들 사이에 통신을 설정하기 위한 컴퓨터 기반 시스템, 방법, 디바이스 및 다른 기술에 대해 설명한다. 일부 구현예에서, 본 기술은 제1 및 제2 웹 페이지가 상이한 출처(origin)을 갖는 경우에도, 인라인 프레임(iFrame)을 통해 주(primary) 웹 페이지와 그 주 웹 페이지에 내장된 (embedded) 부(secondary) 웹 페이지 사이의 양방향 통신을 설정하는데 적용될 수 있다. 일단 양방향 통신 채널이 설정되면, 두 웹 페이지에 있는 스크립트들은 채널을 활용하여 출처 분리를 교차하는 다양한 서비스를 구현할 수 있다. 예를 들어 사용자가 주 웹 페이지의 요소(element)를 클릭하면, 주 페이지의 스크립트가 클릭 이벤트의 부 페이지에 대한 실행 컨텍스트를 알릴 수 있다. 그런 다음 제2 페이지의 핸들러 스크립트는 클릭 이벤트에 응답하여 프로그램된 루틴을 수행할 수 있다. 이와 같이, 교차-출처 실행 컨텍스트들 간의 양방향 통신 채널은 원활한 사용자 경험을 용이하게 하여, 내장 컨텐츠가 마치 별도의 컨테이너에 내장되지 않고 주 웹 페이지의 일부인 것처럼 보이게 한다.
일반적으로 실행 컨텍스트는 스크립트, 웹 페이지, 워크 시트 또는 다른 문서와 같은 특정 컨텐츠 아이템을 실행하기 위한 전용 컴퓨팅 프로세스이다. 시스템은 애플리케이션에서 열리는 각 윈도우에 대해 각각의 실행 컨텍스트를 생성할 수 있는데, 여기서 각 윈도우는 상이한 컨텐츠 아이템을 제시한다. 시스템(예를 들어, 컴퓨팅 시스템상의 운영 체제 또는 애플리케이션)은 하나의 실행 컨텍스트에서 발생하는 이벤트들이 동시에 실행중인 다른 실행 컨텍스트들에 영향을 미치지 않도록 서로 별도로 실행 컨텍스트를 유지관리할 수 있다. 예를 들어, 사용자가 제1 실행 컨텍스트를 갖는 제1 웹 페이지를 새로 고침(refresh)하는 경우, 새로 고침 이벤트는 별도의 실행 컨텍스트에서 유지관리되기 때문에 동일한 브라우저에서 열려 있는 다른 웹 페이지들에 직접적인 영향을 미치지 않을 수 있다. 더욱이, 동일-출처 정책을 시행하는 컴퓨팅 시스템의 경우, 서로 다른 출처의 컨텐츠 아이템들에 대한 실행 컨텍스트는 서로 상호 작용하는 것이 더 제한될 수 있다. 시스템은 동일 출처를 갖는 컨텐츠 아이템들에 대한 실행 컨텍스트 내의 스크립트가 서로 관리되는 데이터와 상호 작용하고 자유롭게 액세스하는 것을 허용할 수 있지만, 동일-출처 정책은 동일-출처 실행 컨텍스트의 스크립트가 서로 관리되는 데이터와 유사하게 상호 작용하거나 액세스하는 것을 제한할 수 있다.
이제 도 1을 참조하면, 예시적인 웹 페이지(102)가 웹 브라우징 애플리케이션의 윈도우(100)에 제시되어 있다. 웹 페이지(102)는 헤드 라인 "예시 웹 사이트"및 텍스트 열과 같은 주 컨텐츠(primary content)의 다양한 부분들(pieces)을 포함한다. 상기 웹 페이지(102)는 상기 제1 출처가 상기 웹 페이지(102)의 URL http://www.firstorigindomainexample.com/home.htm에 의해 적어도 부분적으로 표현되는 제1 출처로부터 온 것이다. 일부 구현예에서, 출처는 (i) URI 체계 또는 프로토콜(예를 들어, http vs. ftp vs. https), (ii) 호스트 이름 및 (iii) 포트를 포함하는 정보의 튜플(tuple)에 의해 정의된다. 두 개의 튜플에 있는 정보의 임의 부분이 매치하지 않으면 튜플에 의해 정의된 출처들이 다른 것으로 간주된다. 보다 일반적인 구현에서 "출처"는 IETF(Internet Engineering Task Force) 요청에 대한 설명(RFC) 6454 "웹 출처 컨텐츠"에 지정된 절차에 따라 결정될 수 있다.
웹 페이지(102)의 주 컨텐츠는 전용 실행 프로세스에서 브라우저에 의해 실행될 수 있다. 웹 페이지(102)가 브라우저 윈도우(100)에 제공되기 때문에, 주 웹 페이지(102)에 대한 실행 프로세스는 역시 웹 페이지(102)가 제시되는 윈도우(100)에 대응한다.
웹 페이지(102)의 주 컨텐츠 이외에, 웹 페이지(102)는 또한 내장 컨텐츠 프레임(104a, 104b)을 포함한다. 제1 내장 컨텐츠 프레임(104a)은 제2 출처의 부 컨텐츠를 제시하고, 제2 내장 컨텐츠 프레임(104b)은 제3 출처로부터 획득된 제2 컨텐츠를 제시한다. 일부 구현예에서, 컨텐츠 프레임(104a 및 104b)은 하나 이상의 iFrames에 의해 각각 정의되고, 각 iFrame에는 자체 실행 컨텍스트로 제공될 수 있다. 컨텐츠 프레임(104a 및 104b)과 같은 예시적인 내장 컨텐츠 프레임의 아키텍처는 도 2와 관련하여 보다 상세하게 설명된다. 웹 브라우저 애플리케이션에 의해 시행되는 동일-출처 정책 및 최상위 웹 페이지(102)의 다른 출처 및 내장 컨텐츠 프레임(104a 및 104b)에 제시된 컨텐츠의 결과로서, 웹 페이지(102) 및 내장 컨텐츠의 각각의 실행 컨텍스트는 서로의 특정 상호 작용 및/또는 서로의 데이터에 액세스하는 것이 제한될 수 있다. 문서(또는 문서에 대한 실행 컨텍스트)와 관련된 데이터는 예를 들어 문서에 대한 문서 객체 모델(DOM), 문서와의 사용자 상호 작용의 표시, 문서 속성, 또는 이들과 다른 데이터의 조합을 포함할 수 있다. 예를 들어, 제1 출처의 제1 웹 페이지에 있는 스크립트는 동일 출처의 제2 웹 페이지의 DOM을 검사 및 수정하거나, 또는 제2 웹 페이지에서 발생하는 이벤트에 대한 리스너 (listener)를 설정하도록 허용될 수 있다. 대조적으로, 동일 출처 정책의 결과로서, 제1 출처의 제1 웹 페이지에 있는 스크립트가 다른 출처의 제2 웹 페이지의 DOM을 검사 또는 수정하지 못하도록 하거나, 또는 제2 웹 페이지에서 발생하는 이벤트에 대한 리스너를 설정하는 것을 차단할 수 있다.
일부 구현예에서, 제2 컨텐츠를 제시하기 위한 컨텐츠 프레임은 실행될 때 브라우저로 하여금 프레임을 웹 페이지에 동적으로 삽입하고 프레임에 제시하기 위해 하나 이상의 제2 컨텐츠 아이템들을 요청하게 하는 최상위 페이지에 스크립트 또는 컴퓨터 코드를 주입함으로써 최상위 웹 페이지에 내장될 수 있다. 제2 컨텐츠 아이템들은 최상위 웹 페이지의 출처와 다른 출처로부터 탐색될 수 있다. 예를 들어, 최상위 웹 페이지(102)는 컨텐츠 제공 네트워크로부터 제2 컨텐츠를 디스플레이하기로 동의한 발행자에 대한 제1 웹 도메인(예컨대, 제1 출처)으로부터 획득될 수 있다. 그런 다음, 제1 내장 컨텐츠 프레임(104a) 내의 스크립트는 컨텐츠 제공 네트워크를 호출하여 프레임(104a)에 디스플레이할 제2 컨텐츠 아이템(예를 들어, 사용자 위치에 대한 날씨 데이터, 맵 서버 또는 네비게이션 서버로부터의 맵 또는 다른 컨텐츠 아이템)을 획득할 수 있다. 유사하게, 제2 내장 컨텐츠 프레임(104b)의 스크립트는 또한 컨텐츠 제공 네트워크를 호출하여 프레임(104b)에 디스플레이할 다른 2차 컨텐츠 아이템을 탐색할 수 있다.
일부 구현예에서, 양방향 통신 채널은 상이한 출처와 관련된 실행 컨텍스트간에 설정될 수 있다. 그러한 채널이 어떻게 설정될 수 있는지에 대한 세부 방법은 도 4 내지 도 7과 관련하여 설명된다. 바람직하게, 양방향 통신 채널은 교차-출처 실행 컨텍스들의 스크립트가 서로 간에 메시지를 전송하고 교차-출처 상호 작용을 수반하는 런-타임 서비스의 범위를 구현하는 것을 허용할 수 있다. 예를 들어, 제1 실행 컨텍스트에서 이벤트 리스너가 설정될 수 있다. 이벤트 리스너가 규정된 이벤트의 발생을 검출하면, 리스너는 양방향 채널을 사용하는 핸들러를 호출하여 이벤트 발생의 제2 실행 컨텍스트를 경고할 수 있다. 그런 다음 제2 실행 컨텍스트의 리스너는 양방향 채널을 통해 확인 응답 및 추가 메시지를 제1 실행 컨텍스트로 다시 전송하는 것을 포함하여 임의의 적절한 방식으로 통지를 처리할 수 있다.
일부 구현예에서, 양방향 통신 채널은 최상위 웹 페이지(102) 및 내장 컨텐츠 프레임(104a, 104b)과 같은 교차-출처 실행 컨텍스트들 간의 통합된 사용자 인터페이스를 생성하는데 사용될 수 있다. 양방향 채널을 통해 전송된 메시지에 기초하여, 최상위 웹 페이지(102)는 내장 컨텐츠 프레임들(104a 또는 104b)의 이벤트에 응답할 수 있고, 그 반대로도 가능하다. 예를 들어, 최상위 웹 페이지(102)는 사용자 인터페이스 요소들(106a 및 106b)를 포함할 수 있다. 요소들(106a 및 106b)은 대응하는 내장 컨텐츠 프레임들(104a 및 104b)에 인접하지만 각각의 외부에 디스플레이된다. 요소들(106a 및 106b)이 최상위 페이지(102)에 제공되고 내장 컨텐츠 프레임들(104a 및 104b)의 외부에 있기 때문에, 브라우저의 동일-출처 정책은 일반적으로 이들 요소가 내장 프레임(104a 및 104b) 내의 동작을 제어하는 것을 제한할 수 있다. 그러나, 본 명세서에 개시된 기술들 중 하나에 따라 양방향 통신 채널이 교차-출처 실행 컨텍스트 사이에 설정되면, 최상위 레벨 웹 페이지(102)의 요소들(106a 또는 106b)과의 상호 작용은 각각 내장 컨텐츠 프레임들(104a 또는 104b)내에서 응답을 트리거할 수 있다.
예를 들어, 리스너는 사용자가 요소(106a)를 선택(예를 들어, 클릭) 한 때를 식별하기 위해 최상위 웹 페이지(102)에 설정될 수 있다. 요소(106a)의 선택이 검출될 때, 최상위 웹 페이지(102)의 핸들러 스크립트는 내장 컨텐츠 프레임(104a)의 리스너에 의해 검출된 이전에 설정된 양방향 통신 채널을 통해 메시지를 전송할 수 있다. 그런 다음 내장 컨텐츠 프레임(104a)으로부터의 핸들러 스크립트는 사용자의 요소(106a) 선택에 응답하여 하나 이상의 동작들, 예를 들어, 컨텐츠 프레임(104a)을 닫거나, 컨텐츠 프레임(104a)에 디스플레이된 컨텐츠를 업데이트하거나, 컨텐츠 프레임(104a)의 미디어 아이템을 재생 또는 일시 정지하거나, 컨텐츠 프레임(104a)에 최근에 디스플레이된 컨텐츠에 관한 질문을 요구하는 사용자를 위한 설문을 생성하거나, 최상위 웹 페이지(102)의 상태에 관한 부가 정보를 요청하거나, 동작(예를 들어, 최상위 웹 페이지(102)의 컨텐츠 프레임(104a) 닫기 및 새로운 내장 컨텐츠 프레임 또는 팝-업 윈도우 생성)을 수행하기 위해 최상위 웹 페이지(102)에 지시들을 제공하거나 또는 이들 및 다른 동작들의 조합을 수행할 수 있다.
일부 구현예에서, 본 명세서에 개시된 기술들은 웹 브라우저 환경 외부의 교차-출처 실행 컨텍스트 사이의 양방향 통신 채널을 설정하기 위해 수행될 수 있다. 예를 들어, 상이한 출처와 관련된 별도의 실행 컨텍스트들로 유지되는 컴퓨팅 디바이스의 애플리케이션 또는 운영 체제의 임의의 2개의 윈도우 또는 사용자 인터페이스들은 본 명세서에 개시된 기술에 따라 양방향 통신 채널을 확립할 수 있다.
도 2는 예시적인 문서(200) 및 내장 컨텐츠 프레임(201)의 블록도를 나타낸다. 문서(200)는 예를 들어 컴퓨팅 디바이스상의 네이티브 애플리케이션의 웹 페이지 또는 인터페이스일 수 있다. 일부 구현예에서, 문서(200)는 컨텐츠 아이템들의 계층 구조(hierarchy)로부터 형성되는데, 여기서 아이템들의 적어도 일부는 상이한 출처을 갖는다. 예를 들어 게시자(publisher)의 웹 사이트는 게시자의 주 컨텐츠를 디스플레이하는 최상위 페이지와 타사 컨텐츠 공급자의 부 컨텐츠를 디스플레이하는 계층 구조에서 하위인 하나 이상의 자손컨텐츠 아이템을 포함할 수 있다. 자손 컨텐츠 아이템들은 예를 들어, 내장 컨텐츠 프레임에 제공된다. 일반적으로, 자손 컨텐츠 아이템들은 상위 레벨(예를 들어, 부모 또는 다른 조상) 실행 컨텍스트 또는 컨테이너 아래에 중첩된 실행 컨텍스트 또는 컨테이너에 제공된 컨텐트 아이템으로서 이해될 수 있다.
문서(200)는 컴퓨팅 디바이스상의 애플리케이션(예를 들어, 웹 브라우저)에 의해 실행될 수 있다. 일부 구현예에서, 애플리케이션은 컨테이너들 내의 문서 (200)에 대한 아이템들의 계층으로부터, 개별 컨텐츠 아이템들 또는 컨텐츠 아이템 그룹들을 제시한다. 컨테이너는 예를 들어 웹 브라우저의 탭(tap) 또는 상위 레벨 컨텐츠 아이템에 내장된 iFrame과 같은 윈도우 객체일 수 있다. 문서(200)가 실행될 때, 애플리케이션은 각 컨테이너에 대한 각각의 실행 컨텍스트를 생성하는데, 여기서 주어진 컨테이너에 대한 실행 컨텍스트는 컨테이너에 제시된 대응 컨텐츠 아이템을 실행한다. 예를 들어, 최상위 웹 페이지는 브라우징 애플리케이션의 메인 윈도우에 제시되고 내장 컨텐츠 아이템들은 애플리케이션의 메인 윈도우내에 중첩된 iFrame에 디스플레이될 수 있다. 브라우저는 메인 윈도우에 제시된 최상위 웹 페이지에 대한 제1 실행 컨텍스트, 최상위 페이지에 내장되어 외부 iFrame에 제시되는 자식 컨텐츠 아이템에 대한 제2 실행 컨텍스트 및 자식 컨텐츠 아이템에 내장되어 외부 iFrame내에 중첩된 내부 iFrame에 제시되는 손자 컨텐츠 아이템에 대한 제3 실행 컨텍스트를 생성할 수 있다.
도 2에 도시된 바와 같이, 예시적인 문서(200)는 일련의 중첩된(nested) 컨테이너들을 포함한다. 최상위 컨테이너(203)는 문서(200)의 주 컨텐츠 아이템을 제시한다. 내장 컨텐츠 프레임(201)은 계층 구조에서 주 아이템 아래에 있는 컨텐츠 아이템들에 대해 2개의 하위(lower-order) 컨테이너를 포함한다. 예를 들어, 내장 컨텐츠 프레임(201)은 최상위 컨테이너(203) 내에 직접적으로 중첩되는 자식 컨테이너(202)를 포함한다. 이어서 자식 컨테이너(202)는 자식 컨테이너(202) 내에 직접적으로 중첩되는 손자 컨테이너(208)를 더 포함한다. 일부 구현예에서, 주 컨텐츠 아이템은 실행될 때 자식 컨테이너(202)를 인스턴스화하는 스크립트를 포함한다. 자식 컨테이너(202)가 인스턴스화된 이후, 자식 컨테이너(202)에 제시된 자식 컨텐츠 아이템 내의 스크립트가 실행되고, 차례로 손자 컨테이너(208)가 인스턴스화된다.
일부 구현예에서, 내장 컨텐츠 프레임(201) 내의 중첩 컨테이너들의 존재는 문서(200)가 디스플레이될 때 사용자로부터 숨겨질 수 있다. 예를 들어, 손자 컨테이너(208)의 디스플레이 영역은 자식 컨테이너(202)의 전체 디스플레이 영역에 걸칠 수 있다. 더욱이, 자식 컨테이너(202) 및 손자 컨테이너(208)는 손자 컨테이너(208)에 제시된 임의의 컨텐츠 아이템이 마치 최상위 컨텐츠 아이템의 프리젠테이션에 원만하게 통합된 것처럼 나타나도록 가시적 경계들을 포함하지 않을 수 있다. 비록 자식 컨테이너(202)의 컨텐츠(손자 컨테이너(208)를 제외한)가 보이지 않을 수도 있지만, 그 존재는 손자 컨테이너(208) 및 최상위 컨테이너(203)에 대한 실행 컨텍스트 간의 통신을 용이하게 하는데 이용될 수 있다. 자식 컨테이너(202)는 또한 예를 들어, 손자 컨테이너(208)의 생성을 용이하게 하고 및/또는 손자 컨테이너(208)에서의 프리젠테이션을 위한 컨텐츠의 선택을 용이하게 하는 스크립트를 포함할 수 있다. 일부 구현예에서, 도 5와 관련하여 더 상세히 설명되는 바와 같이, 자식 컨테이너(202)는 손자 컨테이너(208)의 조상(부모)으로서의 가족 관계에 기안하여 그리고 최상위 컨테이너와 동일한 출처를 갖지만 손자 컨테이너(208)와는 다른 출처를 갖는 연관성에 더 기인하여, 최상위 컨테이너(203)와 손자 컨테이너(208)의 교차-출처 실행 컨텍스트 사이의 양방향 통신 채널의 설정을 용이하게 할 수 있다.
일부 구현예에서, 문서(200)는 실행될 때 문서(200)에 의해 정의된 다양한 테스크를 수행하기 위한 하나 이상의 서비스를 구현하는 스크립트(또는 다른 실행 가능 코드)를 포함한다. 일부 서비스는 비동기적이며 지정된 이벤트가 발생했음을 감지했을 때 태스크에 대한 동작들을 수행한다. 비동기 서비스용 스크립트는 예를 들어, 검출된 이벤트를 청취하고 처리하기 위한 하나 이상의 리스너 모듈 및 하나 이상의 처리기 모듈을 포함할 수 있다. 일부 서비스는 예를 들어, 문서(200)가 초기에 로드될 때 루틴의 일부로서 동기적으로 수행된다. 일부 구현예에서, 문서(200)는, 예를 들어, 최상위 컨테이너(203) 및 손자 컨테이너(208)에 대한 교차-출처 실행 컨텍스트 간의 양방향 통신 채널을 설정하기 위한 동작들을 수행하도록 구성된 연결 서비스(206a-206b)를 포함할 수 있다. 상기 연결 서비스(206a-206b)에 의해 수행되는 동작들은 도 4 내지 도 7과 관련하여 더 상세히 논의된다. 연결 서비스(206a)의 제1 컴포넌트는 자식 컨테이너(202)의 스크립트에 의해 제공될 수 있는 반면에, 연결 서비스(206b)의 제2 컴포넌트는 손자 컨테이너(208)의 스크립트에 의해 제공될 수 있다. 또한, 문서(200)는 접속 서비스(206a-206b)에 의해 설정된 양방향 통신 채널을 사용하여 교차-출처 실행 컨텍스트들 간의 상호 작용들을 포함하는 태스크들과 같은 다른 태스크들을 수행하는 하나 이상의 런타임 서비스(204a-n, 212a-n)를 포함할 수 있다.
도 3은 다수의 내장 컨텐츠 프레임(304a-n)을 포함하는 문서(300)의 블록도이다. 문서(200)(도 2)와 마찬가지로, 도 3에 도시된 문서(300)는 런타임 서비스 세트(306a-n) 및 내장 컨텐츠를 포함할 수 있다. 그러나, 문서(200)와 달리, 문서(300)는, 예를 들어, 하나 이상의 출처로부터의 다수의 부 컨텐츠 아이템을 제시하기 위해 다수의 내장 컨텐츠 프레임(304a-n)을 포함한다. 각각의 내장 컨텐츠 프레임(304a-n)은 1개, 2개, 3개, 4개 또는 그 이상의 중첩 컨텐츠 컨테이너를 포함할 수 있다. 일부 구현예에서, 내장 컨텐츠 프레임(304a-n) 모두 또는 일부는 도 2의 예시적인 내장 컨텐츠 프레임(201)과 같이 구성된다. 예를 들어, 내장 컨텐츠 프레임(304a-n) 중 주어진 하나는 하나 이상의 중첩된 외부 컨테이너(외부 컨테이너의 가장 바깥 쪽이 자식 컨테이너(202)와 같은 최상위 컨테이너의 1 세대 자손) 및 손자 컨테이너(208)와 같은 내부 컨테이너를 포함할 수 있다. 각각의 내장 컨텐츠 프레임(304a-n)은 또한 교차-출처 실행 컨텍스트 간의 양방향 통신을 확립하기 위해 연결 서비스를 구현하도록 구성된 스크립트들을 포함할 수 있다. 일부 구현예에서, 문서(300) 내의 각 컨테이너에 대한 실행 컨텍스트들은 컨테이너의 계층적 배열에 대응하는 계층 구조로 제시될 수 있다.
도 4를 참조하면, 동일-출처 정책을 실시하는 환경에서 교차-출처 실행 컨텍스트들 사이에서 양방향 통신 채널을 생성 및 사용하기 위한 예시적인 프로세스(400)의 흐름도가 도시되어 있다. 채널을 설정하기 위한 동작들의 더 상세한 설명이 도 5 내지 도 7과 관련하여 설명된다.
단계(stage)(402)에서, 컴퓨팅 시스템(예컨대, 데스크탑 컴퓨터, 노트북 컴퓨터, 모바일 컴퓨팅 디바이스 또는 웨어러블 컴퓨팅 디바이스)은 제1 및 제2 실행 컨텍스트를 생성한다. 일부 구현예에서, 제1 및 제2 실행 컨텍스트는 각각 상이한 출처으로부터 컨텐츠 아이템을 제시하도록 구성된 문서 또는 다른 인터페이스 내의 상이한 컨테이너에 대응한다. 예로써, 이러한 논의는 컴퓨팅 시스템이 내장 컨텐츠 프레임(예컨대, 자식 컨테이너(202))의 외부 컨테이너에 제시되는 제1 출처의 컨텐츠를 실행하기 위한 제1 실행 컨텍스트를 생성한 것을 고려할 것이다. 컨텐츠 프레임이 내장된 문서의 최상위 컨테이너에는 또한 제1 출처의 컨텐츠가 포함되므로 최상위 컨테이너와 외부 컨테이너의 실행 컨텍스트는 동일한다. 따라서, 동일-출처 정책은 이러한 실행 컨텍스트들이 상대방의 제한된 데이터에 대한 상호 작용 및 액세스를 상대적으로 자유롭게 수행하도록 허용한다. 대조적으로, 이 예에서 제2 실행 컨텍스트는, 컨텐츠가 내장 컨텐츠 프레임(예컨대, 손자 컨테이너(208))의 내부 컨테이너에 제시되는, 제2 출처의 컨텐츠를 실행한다.
단계(404)에서, 시스템은 연결 서비스를 실행하여 제1 출처의 실행 컨텍스트와 제2 출처의 실행 컨텍스트 사이에 양방향 통신 채널을 설정한다. 예를 들어, 통신 채널은 제1 실행 컨텍스트 및/또는 제1 출처와 관련된 최상위 실행 컨텍스트를 제2 출처와 연관된 제2 실행 컨텍스트에 직접 연결할 수 있다.
양방향 통신 채널을 생성하기 위해, 시스템은 몇 개의 서브 단계(406~410)에서 동작을 수행할 수 있다. 서브 단계(406)에서, 제1 및 제2 실행 컨텍스트 사이에 제1 단방향 서브 채널이 설정된다. 제1 단방향 서브 채널은 제1 실행 컨텍스트로부터 제2 실행 컨텍스트로 진행하여, 제1 실행 컨텍스트에서 제2 실행 컨텍스트로 메시지를 전달하도록 구성된다. 서브 단계(408)에서, 제2 단방향 서브 채널이 제2 및 제1 실행 컨텍스트 사이에 설정된다. 제2 단방향 서브 채널은 제2 실행 컨텍스트로부터 제1 실행 컨텍스트로 진행하여, 제2 실행 컨텍스트에서 제1 실행 컨텍스트로 메시지를 전달하도록 구성된다. 제1 및 제2 서브 채널은 함께 양방향 통신 채널을 형성하는데, 여기서 서브 채널 각각은 양방향 통신을 위한 목표 엔드 포인트을 정의한다.
일부 구현예에서, 제1 및 제2 실행 컨텍스트의 연결 서비스는 통신 채널을 설정하는 프로세스 동안 각각의 실행 컨텍스트간에 메시지를 전송하기 위해 프리미티브이지만 안전한 교차-출처 메시징 프로토콜을 사용할 수 있다. 메시징 프로토콜은 제1 및 제2 실행 컨텍스트가 실행되는 운영 체제 또는 애플리케이션의 애플리케이션 프로그래밍 인터페이스(API)에 의해 접속 서비스에 노출될 수 있다. 예를 들어, 일부 웹 브라우저에는 동일-출처 정책하에서 서로 상호 작용할 수 없더라도 하나의 실행 컨텍스트에서 다른 실행 컨텍스트로 비동기적으로 메시지를 전송할 수 있는 기능을 정의하는 postMessage() 함수가 포함되어 있다. 실행 컨텍스트는 전송된 postMessage를 청취하여 탐지된 메시지를 처리할지 여부를 선택할 수 있다. postMessage() 프로토콜은, 수신자가 메시지를 예상하고 수신자 실행 프로세스가 전송된 임의의 postMessage를 감지하고 처리하기 위한 적절한 스크립트(예컨대, 리스너 및 핸들러)를 제공한 경우 처리할 수 있지만, 전송된 postMessage가 수신자 실행 프로세스에 의해 자동으로 처리되지 않도록 설계되었다. 그러나, postMessage() 프로토콜은 그 자체로 양방향 통신을 제공하지 않으며 주어진 문서 또는 인터페이스에서 다른 실행 컨텍스트의 탐색을 제공하지 않는다. 예를 들어, 도 5 내지 도 7과 관련하여 더 상세하게 개시된 동작들은 특정 인스턴스에서, postMessage() 프로토콜의 이들 결함을 적어도 부분적으로 해결할 수 있다.
선택적 구현예에서, 제1 및 제2 단일 지향성 서브-채널이 초기에 설정될 때, 이들은 초기에 비-연결(비-동작) 상태로 설정될 수 있다. 서브 채널 및 그에 따른 양방향 채널이 비연결 상태에 있을 때, 메시지들이 각각의 수신자 실행 컨텍스트에 성공적으로 전달될 수 있다는 것이 아직 확인되지 않았기 때문에 외부 서비스들(예컨대, 런타임 서비스)이 채널 사용을 차단할 수 있다. 따라서, 단계(410)에서, 시스템은 양방향 통신 채널을 검증하여 그의 동작 상태를 확인한다. 제1 및 제2 서브 채널을 포함하는 채널이 검증되면, 시스템은 제1 및 제2 서브 채널을 포함하는 채널의 상태를 연결 상태(동작 상태)로 설정한다. 그렇지 않은 경우 채널 상태는 비연결 상태로 유지된다.
단계(412)에서, 양방향 통신 채널을 설정하고 검증한 후, 서비스들은 교차-출처 실행 컨텍스트간에 메시지를 전달하기 위해 채널을 사용할 수 있다. 서비스들은 채널을 사용하여 제한된 데이터에 대한 정보 요청을 제1 실행 컨텍스트에서 제2 실행 컨텍스트로(또는 그 반대로) 전송하여, 실행 채널 중 하나에 다른 하나의 이벤트의 발생을 통지하고, 다른 실행 컨텍스트의 DOM의 일부분을 검사하고, 다른 실행 컨텍스트의 DOM의 일부를 수정하고 및/또는 이들 동작과 다른 동작들의 조합을 수행할 수 있다.
도 5는 교차-출처 실행 컨텍스트들 사이에 양방향 통신 채널을 설정하기 위한 예시적인 프로세스(500)의 활동 영역 다이어그램이다. 프로세스(500)는 하나 이상의 위치에 하나 이상의 컴퓨터를 갖는 컴퓨팅 시스템에 의해 수행될 수 있으며, 여기서 컴퓨팅 시스템은 제1 출처로부터의 컨텐츠를 실행하기 위한 제1 실행 컨텍스트 및 제2 출처로부터의 컨텐츠를 실행하기 위한 제2 실행 컨텍스트를 인스턴트화한다. 도 5의 예에서, 제1 실행 컨텍스트는 외부 컨테이너, 예를 들어 컨테이너(202)(도 2)에 해당하고, 제2 실행 컨텍스트는 외부 컨테이너, 예를 들어 컨테이너(208)(도 2) 내에 중첩된 내부 컨테이너에 해당한다. 특히, 외부 컨테이너에 대한 제1 실행 컨텍스트에 의해 수행되는 동작들은 제1 실행 컨텍스트의 연결 서비스를 제공하는 하나 이상의 스크립트에 의해 수행될 수 있다. 유사하게, 내부 컨테이너에 대한 제2 실행 컨텍스트에 의해 수행되는 동작들은 제2 실행 컨텍스트의 연결 서비스를 제공하는 하나 이상의 스크립트에 의해 수행될 수 있다. 또한, 외부 컨테이너는 최상위 컨테이너, 예를 들어 컨테이너(203)에 내장될 수 있다. 최상위 컨테이너는 제1 출처의 컨텐츠를 제시할 수도 있다. 시스템은 출처가 서로 다른 결과로 제1 실행 컨텍스트와 제2 실행 컨텍스트 사이의 상호 작용을 제한하기 위해 동일-출처 정책을 적용할 수 있지만 그들의 공통 출처로 인해 제1 실행 컨텍스트와 최상위 컨테이너의 실행 컨텍스트 사이의 이러한 상호 작용을 허용할 수 있다.
단계(506)에서, 제1 실행 컨텍스트는 탐색 메시지(discovery message)에 대한 최상위 실행 컨텍스트의 리스너를 설정한다. 제1 실행 컨텍스트의 연결 서비스는 동일 출처를 공유하므로 동일-출처 정책하에서 최상위 실행 컨텍스트의 리스너를 설정할 수 있다. 특히, 제1 실행 컨텍스트의 연결 서비스는, 제2 실행 컨텍스트가 동일-출처 정책의 제한으로 인해 처음에는 제1 실행 컨텍스트를 인식하지 못하기 때문에 제1 실행 컨텍스트가 아닌 최상위 실행 컨텍스트의 리스너를 설정한다. 이와 같이, 제2 실행 컨텍스트는 탐색 리스너가 설정된 최상위 컨테이너로 메시지가 전송되어야 함을 나타낼 수는 있다고 하더라도, 탐색 메시지의 의도된 수신자로서 제1 실행 컨텍스트를 초기에 타겟팅할 수 없다.
단계(508)에서, 제2 실행 컨텍스트는 연결 브로드캐스트 메시지에 대한 제2 실행 컨텍스트의 리스너를 설정한다. 연결 브로드캐스트 메시지는 단계(518 및 520)에 관하여 더 설명된다.
단계(510)에서, 제2 실행 컨텍스트는 탐색 메시지를 최상위 컨테이너로 전송한다. 일부 구현에서, 탐색 메시지는 postMessage() 프로토콜을 사용하여 전송된다. 탐색 메시지는 제1 실행 컨텍스트가 양방향 통신 채널을 설정하기 위한 연결 루틴을 개시하기 위한 메시지로서 인식하도록 구성된 메시지 유형이다.
단계(512)에서, 제1 실행 컨텍스트는 제2 실행 컨텍스트로부터 전송된 탐색 메시지를 검출한다. 탐색 메시지는 단계(506)에서 설정된 탐색 리스너를 사용하여 검출된다.
단계(514)에서, 제1 실행 컨텍스트는 탐색 메시지를 분석하여 메시지의 소스를 결정한다. 일부 구현예에서, 제1 실행 컨텍스트는 메시지의 소스 필드의 값에 액세스하여 탐색 메시지의 소스를 결정한다. 이 값은 제2 실행 컨텍스트의 고유 식별자일 수 있다. 이에 의해 최상위 실행 컨텍스트로 전송된 탐색 메시지는 제1 실행 컨텍스트가 제2 실행 컨텍스트의 존재를 결정하고 식별하도록 허용한다.
단계(516)에서, 제1 실행 컨텍스트는 제1 실행 컨텍스트와 제2 실행 컨텍스트 사이의 제1 단방향 서브 채널을 설정한다. 제1 단방향 서브 채널은 탐색 메시지로부터 액세스된 고유 식별자에 기초하여, 양방향 통신 채널의 하나의 엔드 포인트으로서 제2 실행 컨텍스트를 식별한다. 제1 단방향 서브 채널은 제1 실행 컨텍스트로부터 제2 실행 컨텍스트로 메시지들을 전송하는데 사용될 수 있다.
단계(518)에서, 제1 실행 컨텍스트는 제1 단방향 서브 채널을 사용하여 제2 실행 컨텍스트에 연결 브로드캐스트 메시지를 전송한다. 일부 구현예에서, 연결 브로드캐스트 메시지를 전송하는 단계는 postMessage() 프로토콜을 사용하여 제2 실행 컨텍스트로 메시지를 전송하는 단계와, 탐색 메시지로부터 연결 브로드캐스트 메시지의 의도된 수신자로서 획득된 제2 실행 컨텍스트의 식별자를 사용하는 단계를 포함한다. 연결 브로드캐스트 메시지는 제2 실행 컨텍스트가 탐색 메시지에 대한 응답으로 인식되도록 구성된 메시지 유형이다.
단계(520)에서, 제2 실행 컨텍스트는 제1 실행 컨텍스트로부터 전송된 연결브로드캐스트 메시지를 검출한다. 연결 브로드캐스트 메시지는 단계(508)에서 설정된 연결 브로드캐스트 리스너를 사용하여 검출된다.
연결 브로드캐스트 메시지가 감지되면 제2 실행 컨텍스트는 메시지를 분석하여 소스를 결정한다. 일부 구현예에서, 제2 실행 컨텍스트는 메시지의 소스 필드 값을 액세스하여 연결 브로드캐스트 메시지의 소스를 결정한다. 이 값은 제1 실행 컨텍스트의 고유 식별자일 수 있다. 이에 의해 제2 실행 컨텍스트로 전송된 연결 브로드캐스트 메시지는 제2 실행 컨텍스트가 제1 실행 컨텍스트의 존재를 결정하고 식별하도록 허용한다.
단계(522)에서, 제2 실행 컨텍스트는 제2 실행 컨텍스트와 제1 실행 컨텍스트 사이에 제2 단방향 서브 채널을 설정한다. 제2 단방향 서브 채널은 연결 브로드캐스트 메시지로부터 액세스된 고유 식별자에 기초하여, 양방향 통신 채널의 제2 엔드 포인트으로서 제1 실행 컨텍스트를 식별한다. 제2 단방향 서브 채널은 제2 실행 컨텍스트로부터 제1 실행 컨텍스트로 메시지를 송신하는데 사용될 수 있다.
제1 및 제2 단방향 서브 채널이 설정되면, 서브 채널 쌍이 제1 및 제2 실행 컨텍스트간에 양방향 통신을 제공하기에 충분하기 때문에 양방향 통신 채널이 또한 설정된다. 그러나, 일부 구현예에서, 양방향 통신 채널의 상태는 초기에 비연결 상태로 설정될 수 있다. 비연결 상태에서, 양방향 통신 채널은 채널의 동작이 아직 검증되지 않았기 때문에 연결 서비스 이외의 서비스들에 의해 사용 불가능할 수 있다. 서비스들은 사용 전에 채널 상태를 체크하도록 구성될 수 있다. 채널이 연결되면 외부 서비스는 교차-출처 실행 컨텍스트들을 통해 메시지를 전송하는데 이 채널을 사용할 수 있다. 만약 채널이 연결되지 않은 경우 외부 서비스는 아직 채널을 사용하지 않을 수 있다.
채널을 연결 상태로 만드는 검증 프로세스는 단계(524)에서 시작할 수 있는데, 여기서 제2 실행 컨텍스트는 양방향 통신 채널의 제2 서브 채널을 사용하여 제1 채널 연결 메시지를 제2 실행 컨텍스트로 전송한다. 채널 연결 메시지는 양방향 통신 채널의 상태를 연결 상태로 설정하기 위해 수신자 실행 컨텍스트에 지시하는 메시지이다. 일부 구현예에서, 채널 연결 메시지(및 제1 및 제2 실행 컨텍스트간에 교환되는 임의의 다른 메시지)는 postMessage() 프로토콜을 사용하여 전송될 수 있다. 제1 실행 컨텍스트는 (예를 들어, 제1 서브 채널을 설정 한 후에) 제1 실행 컨텍스트에서 제1 연결 메시지에 대한 리스너를 설정할 수 있다. 리스너가 제2 실행 컨텍스트로부터 제1 연결 메시지를 검출하면(단계 526), 제1 실행 컨텍스트는 양방향 통신 채널을 연결 상태로 설정한다(단계 528). 그러나, 채널의 상태는 제1 및 제2 실행 컨텍스트 각각에서 독립적으로 유지된다. 따라서, 단계(530)에서, 제1 실행 컨텍스트는 제2 실행 프로세스로 제2 채널 연결 메시지를 전송한다. 제2 실행 컨텍스트는 (예를 들어, 제2 서브 채널을 설정한 후에) 제2 실행 컨텍스트에서 제2 접속 메시지에 대한 리스너를 설정할 수 있다. 리스너가 제1 실행 컨텍스트로부터 제2 연결 메시지를 검출하면(단계 532), 제2 실행 컨텍스트는 또한 양방향 통신 채널을 비연결 상태로부터 연결 상태로 천이시킨다. 엔드 포인트가 활성화되고 채널의 상태가 제1 및 제2 실행 컨텍스트 모두에 연결되도록 설정된 상태에서, 양방향 채널은 제1 및 제2 출처와 관련된 실행 컨텍스트 내의 하나 이상의 서비스에 의해 적절하게 사용될 수 있다.
도 3과 관련하여 기술된 바와 같이, 일부 문서 또는 인터페이스는 다수의 내장 컨텐츠 프레임, 예컨대 프레임(304a-n)을 포함할 수 있다. 그러한 문서의 경우, 각각의 내장 컨텐츠 프레임은 내장 컨텐츠 프레임의 외부 컨테이너(예컨대, 컨테이너(202)) 및 내장 컨텐츠 프레임의 내부 컨테이너(예컨대, 컨테이너(208))에 대한 실행 컨텍스트들 사이의 통신을 허용하기 위해 자신의 양방향 통신 채널을 설정할 필요가 있을 수 있다. 내장 컨텐츠 프레임 각각에 대해 각각의 양방향 채널을 설정하는데 수반되는 하나의 과제(challenge)는 최상위 컨테이너에 대한 실행 컨텍스트로 전송된 초기 탐색 메시지들이 모든 내장 컨텐츠 프레임의 외부 컨테이너들에 대한 실행 컨텍스트에 의해 설정된 각각의 탐색 메시지 리스너들에 의해 모두 청취될 수 있다는 것이다. 모든 실행 컨텍스트가 모든 탐색 메시지에 응답하지 못하도록 하기 위해, 주어진 내장 컨텐츠 프레임의 외부 컨테이너에 대한 탐색 메시지 이벤트를 위한 핸들러는, 탐색 메시지의 소스(즉, 제2 실행 컨텍스트)가 내장 컨텐츠 프레임의 외부 컨테이너에 대한 실행 컨텍스트의 자손인지를 체크함으로써 탐색 메시지의 의도된 수신자인지 여부를 결정할 수 있다. 예를 들어, 제1 내장 컨텐츠 프레임의 외부 iFrame에서의 연결 서비스가, 첫번째 검출된 탐색 메시지가 외부 iFrame 내에 중첩된 내부 iFrame으로부터 전송되었다고 결정하면, 연결 서비스는 그것이 탐색 메시지의 의도된 수신자임을 결정할 수 있고 도 5와 관련하여 개시된 양방향 통신 채널을 수립하는 절차를 계속함으로써 상기 메시지에 응답할 수 있다. 만약 탐색 메시지가 (예를 들어, 동일한 내장 컨텐츠 프레임 내의 자손으로부터가 아니라) 비-가족 소스로부터 전송되면, 외부 iFrame의 연결 서비스는 그것이 탐색 메시지의 의도된 수신자가 아닌 것으로 결정하고 따라서 해당 메시지를 폐기할 수 있다.
도 6은 다수의 내장 컨텐츠 프레임이 문서에 제공될 때 교차-출처 양방향 통신 채널을 설정하기 위한 예시적인 프로세스(600)의 활동 영역 다이어그램이다. 다이어그램은 내장 컨텐츠 프레임마다 전용 양방향 통신 채널을 설정하기 위해 2 개의 내장 컨텐츠 프레임의 컨테이너에서 연결 서비스가 취할 수 있는 동작들을 나타낸다. 일부 구현예에서, 각각의 내장 컨텐츠 프레임은 도 2의 프레임(201)과 유사하게 배열되고, 각각은 내장 컨텐츠 프레임들 각각을 호스팅하는 최상위 컨테이너의 컨텐츠와 동일한 출처의 컨텐츠를 제시하는 외부 컨테이너를 포함한다. 내장 컨텐츠 프레임들 각각의 내부 컨테이너들은 외부 프레임들 및 최상위 컨테이너의 출처와 상이한 하나 이상의 출처의 컨텐츠를 제시할 수 있다. 컴퓨팅 시스템은 개별 실행 컨텍스트를 인스턴스화하여 각각의 컨테이너들로부터의 컨텐츠를 각각 실행할 수 있다. 일부 구현예에서, 본 명세서에 개시된 기술들은, 심지어 각각의 내부 프레임이 동일한 탐색 메시지를 최상위 실행 컨텍스트로 전송할 때에도, 다수의 내장 컨텐츠 프레임이 동일한 또는 유사한 스크립트들(예를 들어, 연결 서비스드)를 사용하여 동시에 최상위 컨테이너의 실행 컨텍스트에 접속하는 것을 유익하게 허용한다.
단계(614)에서, 제1 실행 컨텍스트는 최상위 실행 컨텍스트에서 탐색 메시지 리스너를 설정한다. 마찬가지로, 단계(618)에서, 제3 실행 컨텍스트는 또한 최상위 실행 컨텍스트에서 탐색 메시지 리스너를 설정한다. 단계들(616 및 620)에서, 제2 실행 컨텍스트 및 제4 실행 컨텍스트 모두는 그들 각각의 실행 컨텍스트들 내에서 연결 브로드캐스트 리스너를 설정한다. 단계(622)에서, 제2 실행 컨텍스트는 초기 탐색 메시지를 최상위 컨테이너의 실행 컨텍스트로 전송한다. 단계(624, 626)에서, 내장 컨텐츠 프레임들 모두의 탐색 리스너들은 제2 실행 컨텍스트로부터 초기 탐색 메시지를 검출한다. 그런 다음, 단계(628)에서, 제1 실행 컨텍스트는 메시지의 속성 값이 메시지가 제1 실행 컨텍스트의 자손으로부터 전송되었음을 나타내기 때문에 초기 탐색 메시지의 타겟(예를 들어 의도된 수신자)이라고 결정한다. 대조적으로, 단계(628)에서, 제3 실행 컨텍스트는 제3 실행 컨텍스트의 자손으로부터 전송되지 않았기 때문에 초기 탐색 메시지의 타겟이 아니며, 이에 따라 동일한 내장 컨텐츠 프레임의 내부 컨테이너로부터의 것이 아니므로 초기 탐색 메시지의 타겟이 아니라고 결정한다. 따라서 제3 실행 컨텍스트는 탐색 메시지를 무시하고 제2 실행 컨텍스트와의 연결을 설정하기 위한 추가 동작(action)을 취하지 않고 메시지를 폐기한다. 반면에, 제1 실행 컨텍스트는 단계(514)(도 5)로부터 진행하여 양방향 통신 채널을 설정하고 검증하는 것을 계속한다.
도 7은 실행 컨텍스트에서 다수의 서비스에 대한 양방향 통신 채널을 다중화하기 위한 예시적인 프로세스(700)의 활동 영역 다이어그램이다. 예를 들어, 내장 컨텐츠 프레임은 사용자가 최상위 컨테이너에서 특정 제어 요소를 선택할 때 내장 컨텐츠 프레임을 닫기 위한 명령을 전달하기 위해 양방향 통신 채널을 사용하도록 구성된 제1 런타임 서비스를 포함하는 내부 컨테이너(예를 들어, iFrame 또는 다른 윈도우 객체)에 컨텐츠를 제시할 수 있다. 내부 컨테이너는 양방향 통신 채널을 사용하여 내부 컨테이너의 제어 요소의 선택에 기초하여 최상위 컨테이너의 컨텐츠를 업데이트하기 위해 교차-출처 명령을 전달하도록 구성된 제2 런타임 서비스를 더 포함할 수 있다. 일부 구현예에서, 각각의 서비스는 전용의 양방향 통신 채널을 필요로 할 수 있다. 프로세스(700)는 동일한 교차-출처 실행 컨텍스트쌍 사이에 다수의 채널이 설정될 수 있는 예시적인 기술을 나타낸다. 일부 구현예에서, 각 채널은 실행 컨텍스트들 중 하나와 관련된 다수의 서비스 중 상이한 하나에 할당된다. 도 7에서, 가장 왼쪽의 레인은 내장 컨텐츠 프레임의 외부 컨테이너에 대한 제1 실행 컨텍스트의 동작을 나타내고; 중간 레인은 내장 컨텐츠 프레임의 내부 컨테이너의 제1 서비스 대신에 제2 실행 컨텍스트의 동작을 나타내고; 가장 오른쪽 레인은 내장 컨텐츠 프레임의 내부 컨테이너의 제2 서비스에 대한 제2 실행 컨텍스트의 동작을 나타낸다.
단계(708)에서, 제1 실행 컨텍스트는 외부 컨테이너와 동일한 출처를 공유하는 최상위 컨테이너에 대한 실행 컨텍스트에서 탐색 메시지 이벤트 리스너를 설정한다.
단계(710 및 712)에서, 제2 실행 컨텍스트의 연결 서비스는 제2 실행 컨텍스트에서 2개의 연결 브로드캐스트 메시지 이벤트 리스너를 설정한다. 이러한 리스너들 중 제1 리스너는 제1 런타임 서비스를 대신하여 설정되고 제2 리스너는 내부 컨테이너의 제2 런타임 서비스를 대신하여 설정된다. 부모 실행 컨텍스트(예를 들어, 제1 실행 컨텍스트)로부터 나중에 수신될 수 있는 예상 연결 브로드캐스트 메시지들을 구별하기 위해, 제1 리스너는 제1 런타임 서비스와 관련된 제1 토큰을 포함하는 연결 브로드캐스트 메시지만을 검출하도록 구성된다. 마찬가지로, 제2 리스너는 제2 런타임 서비스와 관련된 제2 토큰을 포함하는 연결 브로드캐스트 메시지만을 검출하도록 구성된다.
단계(714)에서, 제2 실행 컨텍스트는 양방향 통신 채널을 확립하기 위한 요청을 나타내기 위해 탐색 메시지를 최상위 실행 컨텍스트로 전송한다. 전송된 탐색 메시지는 채널이 제1 런타임 서비스와 관련하여 설정되어야 함을 나타내기 위해 제1 런타임 서비스와 관련된 제1 토큰을 포함할 수 있다.
단계(716)에서, 제1 실행 컨텍스트는 탐색 메시지 리스너로부터의 표시(indication)에 기초하여 제2 실행 컨텍스트로부터의 탐색 메시지를 검출한다. 단계(718)에서, 제1 실행 컨텍스트는 탐색 메시지를 분석하여 메시지의 소스를 결정한다. 예를 들어, 제1 실행 컨텍스트는 탐색 메시지와 관련된 속성으로부터 제2 실행 컨텍스트의 식별자를 결정할 수 있다. 제2 실행 컨텍스트의 식별자를 사용하여, 단계(720)에서, 제1 실행 컨텍스트는 제2 실행 컨텍스트의 제1 서비스와 제1 단방향 서브 채널을 설정한다. 제1 단방향 서브 채널은 제1 단방향 서브 채널을 통해 제2 실행 컨텍스트로 전송되는 후속 메시지들에서 상기 탐색 메시지에 포함된 제1 토큰을 포함하도록 제1 서브 채널을 구성함으로써 제1 서비스와 연관될 수 있다. 단계(722)에서, 제1 실행 컨텍스트는 제1 단방향 서브 채널을 통해 제2 실행 컨텍스트로 제1 연결 브로드캐스트 메시지를 전송한다. 제1 연결 브로드캐스트 메시지는 메시지가 제2 실행 컨텍스트의 제1 런타임 서비스에 속하는 것을 나타내는 제1 토큰을 포함한다.
제1 연결 브로드캐스트 메시지를 제2 실행 컨텍스트로 전송한 결과, 제2 실행 컨텍스트는 메시지를 수신하고 연결 브로드캐스트 리스너들에 의해 검출된다(단계 724 및 단계 730). 단계(726)에서, 제2 실행 컨텍스트는 제1 연결 브로드캐스트 메시지를 분석하여, 메시지 내의 제1 토큰을 식별하고, 메시지가 제1 런타임 서비스에 속하는지를 제1 토큰으로부터 결정한다. 그런 다음 프로세스(700)는 제1 실행 컨텍스트와 제2 실행 컨텍스트의 제1 서비스 사이의 양방향 통신 채널을 설정 및 검증하기 위해 단계(522)(도 5)로 진행할 수 있다. 제1 토큰은 채널의 설정 동안 제1 및 제2 실행 컨텍스트 사이의 후속 메시지에 포함될 수 있고, 메시지들이 제1 런타임 서비스와 관련이 있음을 나타 내기 위해 채널을 설정한 후 데이터를 전송할 수 있다.
대조적으로, 단계(732)에서, 제2 실행 컨텍스트는 제1 연결 브로드캐스트 메시지가 제2 런타임 서비스와 연관된 제2 토큰을 포함하지 않는다고 결정하고, 따라서 제1 연결 브로드캐스트 메시지는 제2 런타임 서비스와 관련이 없다. 따라서, 제2 실행 컨텍스트는 제2 런타임 서비스에 대한 제1 연결 브로드캐스트 메시지를 폐기하고, 제1 실행 컨텍스트와 제2 실행 컨텍스트의 제2 런타임 서비스 사이에 채널을 설정하지 않도록 선택한다. 도 7의 도면에는 도시되지 않았지만, 일부 구현예에서, 별도의 채널이 제1 실행 컨텍스트와 제2 실행 컨텍스트의 제2 런타임 서비스 간의 통신을 위해 설정될 수 있다.
일부 구현예에서, 양방향 통신 채널의 보안을 강화하기 위해, 허용 가능한 출처들의 화이트리스트가 제1 및 제2 실행 컨텍스트 중 하나 또는 둘 모두에 의해 유지될 수 있다. 만약 탐색 메시지가 제2 출처에 대한 다른 실행 컨텍스트와 함께 양방향 채널을 설정하도록 요청하는 제1 출처에 대한 실행 컨텍스트에서 수신되면, 제1 출처에 대한 실행 컨텍스트는 화이트리스트를 체크하여 제2 출처가 나타나는지 여부(예를 들어, 제2 출처의 도메인이 화이트리스트에 있는 신뢰할 만한 도메인지 여부)를 결정할 수 있다. 제2 출처가 화이트리스트상에 없는 경우, 제1 출처에 대한 실행 컨텍스트는 통신 채널을 설정하기 위한 요청을 거절할 수 있다. 일부 구현에서, 금지 출처들이 블랙리스트에 추가될 수 있는데, 이것은 교차-출처 실행 컨텍스트들에 대한 채널을 설정하기 위한 요청을 수락하기 전에 체크된다.
도 8은 본 명세서에 기술된 기술을 구현하는데 사용될 수 있는 컴퓨팅 디바이스(800) 및 모바일 컴퓨팅 디바이스의 예를 도시한다. 컴퓨팅 디바이스(800)는 랩탑, 데스크탑, 워크 스테이션, 개인용 디지털 보조 장치, 서버, 블레이드 서버, 메인 프레임 및 다른 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타 내기 위한 것이다. 모바일 컴퓨팅 디바이스는 개인용 디지털 보조 장치, 셀룰러 전화기, 스마트 폰 및 다른 유사 컴퓨팅 디바이스와 같은 다양한 형태의 모바일 디바이스를 나타내기 위한 것이다. 여기에 나타낸 구성 요소, 이들의 연결 및 관계 및 그 기능들은 단지 예시적인 것을 의미하며, 본 명세서에 기재된 및/또는 청구된 발명의 구현을 제한하는 것을 의미하지는 않는다.
컴퓨팅 디바이스(800)는 프로세서(802), 메모리(804), 저장 디바이스(806), 메모리(804) 및 다수의 고속 확장 포트(810)에 연결된 고속 인터페이스(808), 및 저속 확장 포트(814) 및 저장 디바이스(806)에 연결된 저속 인터페이스(812)를 포함한다. 상기 프로세서(802), 메모리(804), 저장 디바이스(806), 고속 인터페이스(808), 고속 확장 포트(810) 및 저속 인터페이스(812) 각각은 다양한 버스를 사용하여 상호 연결되며, 공통 마더 보드상에 또는 다른 적절한 방식으로 장착될 수 있다. 프로세서(802)는 메모리(804) 또는 저장 디바이스(806)에 저장된 명령들을 포함하여 컴퓨팅 디바이스(800) 내의 실행을 위한 명령들을 처리하여, 고속 인터페이스(808)에 결합된 디스플레이(816)와 같은 외부 입/출력 디바이스상의 GUI에 대한 그래픽 정보를 디스플레이할 수 있다. 다른 구현예에서, 다수의 프로세서 및/또는 다수의 버스가 다수의 메모리 및 다수 유형의 메모리와 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스가 (예를 들어, 서버 뱅크, 블레이드 서버 그룹 또는 멀티 프로세서 시스템으로서) 필요한 동작들의 일부를 제공하는 각각의 디바이스와 연결될 수 있다.
메모리(804)는 컴퓨팅 디바이스(800) 내의 정보를 저장한다. 일부 구현예에서, 메모리(804)는 휘발성 메모리 유닛(들)이다. 일부 구현예에서, 메모리(804)는 비 휘발성 메모리 유닛(들)이다. 메모리(804)는 또한 자기 또는 광학 디스크와 같은 컴퓨터 판독 가능 매체의 다른 형태일 수 있다.
저장 디바이스(806)는 컴퓨팅 디바이스(800)에 대용량 저장 디바이스를 제공할 수 있다. 일부 구현예에서, 저장 디바이스(806)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사 고체 상태 메모리 디바이스, 또는 저장 영역 네트워크 또는 기타 구성의 디바이스들을 포함하는 디바이스들의 어레이와 같은 컴퓨터 판독 가능 매체일 수 있거나 포함할 수 있다. 컴퓨터 프로그램 제품은 또한 실행될 때 상술한 바와 같은 하나 이상의 방법을 수행하는 명령들을 포함할 수 있다. 컴퓨터 프로그램 제품은 또한 메모리(804), 저장 디바이스(806) 또는 프로세서(802)상의 메모리와 같은 컴퓨터 판독 가능 매체 또는 기계 판독 가능 매체에 유형적으로 구체화될 수 있다.
고속 인터페이스(808)는 컴퓨팅 디바이스(800)에 대한 높은 대역폭 집중형 동작들을 관리하는 반면, 저속 인터페이스(812)는 낮은 대역폭 집중형 동작들을 관리한다. 이러한 기능 할당은 단지 예시적일 뿐이다. 일부 구현예에서, 고속 인터페이스(808)는 메모리(804), 디스플레이(816)(예컨대, 그래픽 프로세서 또는 가속기를 통해) 및 다양한 확장 카드(미도시)를 수용할 수 있는 고속 확장들(810)에 결합될 수 있다. 구현예에서, 저속 인터페이스(812)는 저장 디바이스(806) 및 저속 확장 포트(814)에 결합된다. 다양한 통신 포트(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트(814)는 키보드, 포인팅 디바이스, 스캐너 등과 같은 하나 이상의 입/출력 디바이스 또는 예를 들어 네트워크 어댑터를 통해 스위치 또는 라우터와 같은 네트워킹 디바이스에 결합될 수 있다.
컴퓨팅 디바이스(800)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 표준 서버(820)로 구현되거나, 또는 그러한 서버들의 그룹에서 여러번 구현될 수 있다. 또한, 랩탑 컴퓨터(822)와 같은 퍼스널 컴퓨터에서 구현될 수도 있다. 또한, 랙 서버 시스템(824)의 일부로서 구현될 수도 있다. 대안적으로, 컴퓨팅 디바이스(800)의 컴포넌트는 모바일 컴퓨팅 디바이스(850)와 같은 모바일 디바이스(미도시)의 다른 컴포넌트들과 결합될 수 있다. 이러한 디바이스 각각은 컴퓨팅 디바이스(800) 및 모바일 컴퓨팅 디바이스(850) 중 하나 이상을 포함할 수 있으며, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스로 구성될 수 있다.
모바일 컴퓨팅 디바이스(850)는 다른 컴포넌트들 중에서 프로세서(852), 메모리(864), 디스플레이(854)와 같은 입/출력 디바이스, 통신 인터페이스(866) 및 송수신기(868)를 포함한다. 모바일 컴퓨팅 디바이스(850)는 또한 추가 저장을 제공하기 위해 마이크로-드라이브 또는 다른 디바이스와 같은 저장 디바이스와 함께 제공될 수 있다. 프로세서(852), 메모리(864), 디스플레이(854), 통신 인터페이스(866) 및 송수신기(868) 각각은 다양한 버스를 사용하여 상호 접속되며, 몇몇 구성 요소는 공통 마더 보드 상에 또는 적절하게 다른 방식으로 장착될 수 있다.
프로세서(852)는 메모리(864)에 저장된 명령들을 포함하여 모바일 컴퓨팅 디바이스(850) 내의 명령들을 실행할 수 있다. 프로세서(852)는 별도의 다수의 아날로그 및 디지털 프로세서를 포함하는 칩들의 칩셋으로서 구현될 수 있다. 프로세서(852)는 예를 들어 사용자 인터페이스의 제어, 모바일 컴퓨팅 디바이스(850)에 의해 실행되는 애플리케이션 및 모바일 컴퓨팅 디바이스(850)에 의한 무선 통신과 같은 모바일 컴퓨팅 디바이스(850)의 다른 구성 요소들의 조정을 제공할 수 있다.
프로세서(852)는 제어 인터페이스(858) 및 디스플레이(854)에 연결된 디스플레이 인터페이스(856)를 통해 사용자와 통신할 수 있다. 디스플레이(854)는 예를 들어, TFT(Thin-Film-Semiconductor Liquid Crystal Display) 디스플레이 또는 OLED(Organic Light Emitting Diode) 디스플레이 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(856)는 사용자에게 그래픽 및 다른 정보를 제시하기 위해 디스플레이(854)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(858)는 사용자로부터 명령들을 수신하여 프로세서(852)에 제출하기 위해 이들을 변환할 수 있다. 또한, 외부 인터페이스(862)는 모바일 컴퓨팅 디바이스(850)의 다른 디바이스와 모바일 컴퓨팅 디바이스(850)의 근거리 통신을 가능하게 하기 위해 프로세서(852)와의 통신을 제공할 수 있다. 외부 인터페이스 (862)는 예를 들어, 일부 구현예에서 유선 통신 또는 다른 구현예에서 무선 통신을 제공할 수 있으며, 또한 다중 인터페이스가 사용될 수 있다.
메모리(864)는 모바일 컴퓨팅 디바이스(850) 내의 정보를 저장한다. 메모리(864)는 컴퓨터 판독 가능 매체 또는 미디어, 휘발성 메모리 유닛(들) 또는 비 휘발성 메모리 유닛(들) 중 하나 이상으로서 구현될 수 있다. 확장 메모리(874)는 또한 예를 들어 SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(872)를 통해 모바일 컴퓨팅 디바이스(850)에 제공되고 접속될 수 있다. 확장 메모리(874)는 모바일 컴퓨팅 디바이스(850)를 위한 여분의 저장 공간을 제공하거나, 모바일 컴퓨팅 디바이스(850)에 대한 애플리케이션 또는 다른 정보를 저장할 수 있다. 특히, 확장 메모리(874)는 전술한 프로세스를 수행하거나 보충하기 위한 명령들을 포함할 수 있으며, 또한 보안 정보를 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(874)는 모바일 컴퓨팅 디바이스(850)에 대한 보안 모듈로서 제공될 수 있고, 모바일 컴퓨팅 디바이스(850)의 안전한 사용을 허용하는 명령들로 프로그램될 수 있다. 게다가, 보안 애플리케이션은 SIMM 카드에 식별 정보를 해킹할 수 없는 방식으로 배치하는 것과 같은 추가 정보와 함께 SIMM 카드를 통해 제공될 수 있다.
메모리는 예를 들어 후술되는 바와같이 플래시 메모리 및/또는 NVRAM 메모리(비 휘발성 랜덤 액세스 메모리)를 포함할 수 있다. 컴퓨터 프로그램 제품은 실행될 때 상술한 바와 같은 하나 이상의 방법을 수행하는 명령들을 포함한다. 컴퓨터 프로그램 제품은 메모리(864), 확장 메모리(874) 또는 프로세서(852)상의 메모리와 같은 컴퓨터 또는 기계 판독 가능 매체일 수 있다. 일부 구현예에서, 컴퓨터 프로그램 제품은 예를 들어 송수신기(868) 또는 외부 인터페이스(862)를 통해 전파된 신호로 수신될 수 있다.
모바일 컴퓨팅 디바이스(850)는 필요에 따라 디지털 신호 프로세싱 회로를 포함할 수 있는 통신 인터페이스(866)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(866)는 GSM 음성 호출, SMS(단문 메시지 서비스), EMS(강화된 메시징 서비스) 또는 MMS 메시징(멀티미디어 메시징 서비스), CDMA(코드 분할 다중 접속), TDMA(시분할 다중 접속), PDC(개인 디지털 셀룰러), WCDMA(광대역 코드 분할 다중 접속), CDMA2000 또는 GPRS(범용 패킷 무선 서비스)와 같은 다양한 모드 또는 프로토콜 하에서의 통신을 제공할 수 있다. 이러한 통신은, 예를 들어 무선 주파수를 사용하는 송수신기(868)를 통해 발생할 수 있다. 게다가, 블루투스, WiFi 또는 다른 송수신기(미도시)를 사용하는 것과 같은 단거리 통신이 발생할 수 있다. 또한, GPS(Global Positioning System) 수신기 모듈(870)은 모바일 컴퓨팅 디바이스(850)상에서 실행되는 애플리케이션에 의해 적절히 사용될 수 있는 추가의 네비게이션 및 위치 관련 무선 데이터를 모바일 컴퓨팅 디바이스(850)에 제공할 수 있다.
모바일 컴퓨팅 디바이스(850)는 또한 사용자로부터 음성 정보를 수신하여 그것을 이용 가능한 디지털 정보로 변환할 수 있는 오디오 코덱(860)을 사용하여 청각적으로 통신할 수 있다. 오디오 코덱(860)은 마찬가지로, 예를 들어 모바일 컴퓨팅 디바이스(850)의 핸드셋에 있는 스피커를 통해 사용자를 위한 가청 사운드를 생성할 수 있다. 이러한 사운드는 음성 전화 호출의 사운드를 포함할 수 있고, 녹음된 사운드(예를 들어, 음성 메시지, 음악 파일들 등)을 포함할 수 있고, 또한 모바일 컴퓨팅 디바이스(850)상에서 동작하는 애플리케이션들에 의해 생성된 사운드를 포함할 수 있다.
모바일 컴퓨팅 디바이스(850)는 도면에 도시된 바와 같이 다수의 상이한 형태로 구현될 수 있다. 예를 들어, 이것은 셀룰러 전화기(880)로서 구현될 수 있다. 또한 스마트 폰(882), 개인 휴대 정보 단말기(personal digital assistant) 또는 다른 유사 이동 디바이스의 일부로서 구현될 수 있다.
본 명세서에 기술된 시스템 및 기술의 다양한 구현예는 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC(주문형 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현은 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령을 수신하고, 데이터 및 명령을 저장 시스템에 전송하도록 결합된 특수 또는 범용일 수 있는 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템상에서 실행 가능 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램으로의 구현을 포함할 수 있다.
이들 컴퓨터 프로그램(또는 프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로도 알려진)은 프로그램 가능 프로세서를 위한 기계 명령들을 포함하며 높은 수준의 절차 및/또는 객체 지향적인 프로그래밍 언어 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용된 바와 같이, 기계 판독 가능 매체 및 컴퓨터 판독 가능 매체라는 용어는, 기계 판독 가능 신호로서 기계 명령들을 수신하는 기계 판독 가능 매체를 포함하여, 기계 명령 및/또는 데이터를 프로그램 가능 프로세서로 제공하는데 사용되는 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크, 광 디스크, 메모리, 프로그램 가능 로직 디바이스(PLD))를 지칭한다. 기계 판독 가능 신호라는 용어는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서로 제공하는데 사용되는 모든 신호를 의미한다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 기술된 시스템 및 기술은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예컨대, CRT 또는 LCD 모니터) 및 사용자가 컴퓨터에 입력을 제공할 수 잇는 키보드 및 포인팅 디바이스(예컨대, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에 구현될 수 있다. 다른 종류의 디바이스들이 사용자와의 상호 작용을 제공하는데 사용될 수 있는데, 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백(예를 들어, 시각적 피드백, 청각 피드백 또는 촉각 피드백)일 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하여 임의의 형태로 수신될 수 있다.
본 명세서에 설명된 시스템 및 기술은 백엔드 구성 요소(예컨대, 데이터 서버)를 포함하거나 미들웨어 구성 요소(예컨대, 애플리케이션 서버)를 포함하거나 프런트 엔드 구성 요소(예컨대, 사용자가 본 명세서에 개시된 시스템 및 기술의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터) 또는 그러한 백 엔드, 미들웨어 또는 프런트 엔드 구성 요소의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성 요소들은 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들어, 통신 네트워크)에 의해 상호 접속될 수 있다. 통신 네트워크의 예는 근거리 통신망(LAN), 광역 통신망(WAN) 및 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 이격되어 있으며 기본적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터상에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다.
여기서 시스템, 방법, 디바이스 및 기타 기술이 사용자에 관한 개인 정보(예컨대, 컨텍스트 데이터)를 수집하거나 개인 정보를 사용하는 경우, 사용자는 프로그램들 또는 기능들이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 사회적 행동 또는 활동, 직업, 사용자의 선호 또는 사용자의 현재 위치에 관한 정보)를 수집하는지 또는 사용자와 더 관련이 있을 수 있는 컨텐츠를 컨텐츠 서버로부터 수신할지 여부 및/또는 수신 방법을 제어할 수있는 기회를 제공받을 수 있다. 게다가, 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방법으로 취급되어 개인적으로 식별가능한 정보가 제거된다. 예를 들어, 사용자의 신원은 처리되어 사용자에 대해 개인 식별 정보가 결정될 수 없도록 하거나 사용자의 지리적 위치를 위치 정보가 획득된 곳(예컨대, 도시, 우편 번호 또는 주 수준)으로 일반화하여 사용자의 특정 위치가 결정될 수 없게 할 수 있다. 따라서 사용자는 사용자에 관한 정보 수집 방법 및 컨텐츠 서버에서 사용하는 방법을 제어할 수 있다.
비록 다양한 구현예가 상술되었지만, 다른 수정이 가능하다. 예를 들어, 일 실시예 또는 구현예를 참조하여 설명된 특징은 본 명세서에 설명된 다른 실시예 또는 구현예에서 제공될 수 있다. 게다가, 도면들에 도시된 논리 흐름들은 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 요구하지 않는다. 또한, 설명된 흐름들로부터 다른 단계들이 제공되거나 단계들이 제거될 수 있으며, 설명된 시스템들에 다른 구성 요소들이 추가되거나 이들로부터 제거될 수 있다. 따라서, 다른 구현예들은 다음의 청구항의 범위 내에 있다.

Claims (20)

  1. 컴퓨팅 시스템상의 제1 실행 컨텍스트와 컴퓨팅 시스템상의 제2 실행 컨텍스트사이에 데이터를 전달하기 위한 컴퓨터 구현 방법으로서,
    상기 제1 실행 컨텍스트는 제1 출처의 컨텐츠를 실행하고,
    상기 제2 실행 컨텍스트는 상기 제1 출처와 상이한 제2 출처의 컨텐츠를 실행하고, 그리고
    상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트는 컴퓨팅 시스템에 의해 구현된 동일-출처 정책의 결과로 각각 서로의 데이터에 액세스하는 것이 제한되며, 상기 방법은,
    상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 양방향 통신 채널을 설정(establish)하는 단계와; 상기 양방향 통신 채널을 설정하는 단계는,
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 초기 탐색 메시지(initial discovery message)를 수신하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 초기 탐색 메시지에 기초하여 상기 제2 실행 컨텍스트의 식별자를 결정하는 단계와;
    상기 제2 실행 컨텍스트의 식별자를 사용하여, 상기 양방향 통신 채널의 제1 단방향 서브 채널을 설정하는 단계와, 상기 제1 단방향 서브 채널은 상기 제1 실행 컨텍스트로부터 제2 실행 컨텍스트로 메시지들을 전달하도록 구성되고;
    상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 연결 브로드캐스트 메시지를 수신하는 단계와;
    상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 상기 연결 브로드캐스트 메시지에 기초하여 상기 제1 실행 컨텍스트의 식별자를 결정하는 단계와;
    상기 제1 실행 컨텍스트의 식별자를 이용하여, 상기 양방향 통신 채널의 제2 단방향 서브 채널을 설정하는 단계와, 상기 제2 단방향 서브 채널은 상기 제2 실행 컨텍스트로부터 상기 제1 실행 컨텍스트로 메시지들을 전달하도록 구성되고; 그리고
    상기 제1 실행 컨텍스트에서 제2 실행 컨텍스트로 메시지를 전달하도록 구성된 제1 단방향 서브 채널 및 상기 제2 실행 컨텍스트에서 제1 실행으로 메시지를 전달하도록 구성된 제2 단방향 서브 채널을 설정한 후, 상기 제1 단방향 서브 채널과 제2 단방향 서브 채널이 연결 상태인지 검증하는 단계를 포함하고; 그리고
    상기 검증된 양방향 통신 채널을 통해 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 메시지들을 전달(communicate)하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 동일-출처 정책에 따라, 상기 컴퓨팅 시스템은,
    상기 제1 출처 및 제2 출처의 전송 프로토콜, 어드레스 또는 포트 번호 중 적어도 하나가 서로 상이하다는 것을 식별하는 것에 응답하여 상기 제2 출처를 상기 제1 출처와 상이한 것으로 분류하는 것을 특징으로 하는 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 제1 실행 컨텍스트는,
    상기 제1 출처의 컨텐츠를 제시하도록 구성된 제1 윈도우 객체를 포함하고, 상기 제2 실행 컨텍스트는 상기 제2 출처의 컨텐츠를 제시하도록 구성된 제2 윈도우 객체를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  4. 제3항에 있어서,
    상기 제1 윈도우 객체에 제시된 컨텐츠는 상기 제1 출처와 관련된 제1 도메인에서 하나 이상의 서버에 의해 호스팅되는 제1 웹 페이지를 포함하고;
    상기 제2 윈도우 객체에 제시된 컨텐츠는 상기 제2 출처와 관련된 제2 도메인에서 하나 이상의 서버에 의해 호스팅되는 제2 웹 페이지를 포함하고; 그리고
    상기 제2 윈도우 객체는 제1 웹 페이지에 내장된 인라인 프레임(iFrame)인 것을 특징으로 하는 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 컴퓨팅 시스템의 웹 브라우징 애플리케이션을 이용하여 상기 제1 실행 컨텍스트 및 상기 제2 실행 컨텍스트를 생성하는 단계를 더 포함하고,
    상기 제1 단방향 서브 채널은 상기 웹 브라우징 어플리케이션의 포스트 메시지(postMessage) 어플리케이션 프로그래밍 인터페이스(API)를 사용하여 상기 제1 실행 컨텍스트로부터 상기 제2 실행 컨텍스트로 메시지들을 전달하도록 구성되고,
    상기 제2 단방향 서브 채널은 상기 웹 브라우징 어플리케이션의 상기 포스트 메시지 API를 사용하여 상기 제2 실행 컨텍스트로부터 상기 제1 실행 컨텍스트로 메시지들을 전달하도록 구성되는 것을 특징으로 하는 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 제2 실행 컨텍스트는 상기 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손이고, 그리고
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 초기 탐색 메시지에 기초하여 상기 제2 실행 컨텍스트의 식별자를 결정하는 단계는 상기 초기 탐색 메시지의 소스 식별자 필드의 값에 액세스하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 제1 단방향 서브 채널과 제2 단방향 서브 채널이 연결 상태인지 검증하는 단계는:
    상기 제2 실행 컨텍스트에서 상기 제1 실행 컨텍스트로 제1 채널 연결 메시지를 전송하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 제1 채널 연결 메시지를 수신하는 단계와;
    상기 제1 채널 연결 메시지를 수신하는 것에 응답하여, 상기 제1 실행 컨텍스트에서 연결 상태인 것으로 상기 양방향 통신 채널을 마킹하는 단계와;
    상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로 제2 채널 연결 메시지를 전송하는 단계와;
    상기 제2 실행 컨텍스트에서, 상기 제1 실행 컨텍스트로부터 전송된 상기 제2 채널 연결 메시지를 수신하는 단계와; 그리고
    상기 제2 채널 연결 메시지를 수신하는 것에 응답하여, 상기 제2 실행 컨텍스트에서 연결 상태인 것으로 상기 양방향 통신 채널을 마킹하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  8. 제7항에 있어서,
    상기 제1 실행 컨텍스트 내의 하나 이상의 서비스는 상기 제1 단방향 서브 채널이 연결 상태에 있음을 식별하는 것에 응답하여 상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로 메시지들을 전달하기 위해 상기 양방향 통신 채널을 사용하도록 구성되고,
    상기 제1 실행 컨텍스트 내의 상기 하나 이상의 서비스는 상기 제1 단방향 서브 채널이 비-연결 상태에 있음을 식별하는 것에 응답하여 상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로 메시지들을 전달하기 위해 상기 양방향 통신 채널 대신 별도의 채널을 사용하도록 구성되는 것을 특징으로 하는 컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트가 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손인지 여부를 체크함으로써 상기 제1 실행 컨텍스트가 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지의 타겟인지 여부를 결정하는 단계와; 그리고
    상기 제2 실행 컨텍스트가 상기 제1 실행 컨텍스트의 자손이라고 식별하는 것에 응답하여:
    (ⅰ) 상기 제1 실행 컨텍스트가 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지의 타겟인 것으로 결정하고 상기 제1 단방향 서브 채널을 설정하도록 진행하는 단계, 및
    (ii) 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 상기 제1 단방향 서브 채널을 설정하도록 선택하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 제1 실행 컨텍스트에서, 상기 제1 출처 이외의 출처의 컨텐츠를 실행하는 제3 실행 컨텍스트로부터 전송된 제2 초기 탐색 메시지를 수신하는 단계와, 상기 제1 실행 컨텍스트와 상기 제3 실행 컨텍스트는 컴퓨팅 시스템에 의해 구현된 동일-출처 정책의 결과로 서로의 데이터에 액세스하는 것이 각각 제한되며;
    상기 제1 실행 컨텍스트에서, 상기 제3 실행 컨텍스트가 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손인지 여부를 체크함으로써 상기 제1 실행 컨텍스트가 상기 제3 실행 컨텍스트로부터의 상기 제2 초기 탐색 메시지의 타겟인지 여부를 결정하는 단계와; 그리고
    상기 제3 실행 컨텍스트가 상기 제1 실행 컨텍스트의 자손이 아니라고 식별하는 것에 응답하여, 상기 제1 실행 컨텍스트와 상기 제3 실행 컨텍스트 사이에 통신 채널을 설정하지 않도록 상기 제2 초기 탐색 메시지를 폐기하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  11. 제1항에 있어서,
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지가, 상기 초기 탐색 메시지가 상기 제1 실행 컨텍스트와 제2 실행 컨텍스트의 제1 서비스 사이의 제1 채널의 설정을 개시하는 것임을 나타내는 제1 토큰을 포함하는지 식별하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 제2 초기 탐색 메시지를 수신하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터의 상기 제2 초기 탐색 메시지가, 상기 제2 초기 탐색 메시지가 상기 제1 실행 컨텍스트와 제2 실행 컨텍스트의 제1 서비스와 상이한 상기 제2 실행 컨텍스트의 제1 서비스 사이의제2 채널의 설정을 개시하는 것임을 나타내는 제2 토큰을 포함하는지 식별하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  12. 제1항에 있어서,
    상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 상기 양방향 통신 채널을 설정하는 단계 이후에,
    상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 제어 요소 (control element)와의 사용자 상호 작용을 식별하는 단계와; 그리고
    상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 상기 제어 요소와의 사용자 상호 작용을 식별하는 것에 응답하여, 상기 양방향 통신 채널을 통해 상기 제1 실행 컨텍스트에서 상기 제2 실행 컨텍스트로, 상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 제어 요소와의 상기 사용자 상호 작용의 표시를 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  13. 제12항에 있어서,
    상기 제1 실행 컨텍스트의 프리젠테이션 내에 디스플레이된 제어 요소와의 상기 사용자 상호 작용은 상기 제2 실행 컨텍스트에 의해 실행되는 상기 컨텐츠의 프리젠테이션을 숨기거나 닫기 위한 명령을 나타내는 것을 것을 특징으로 하는 컴퓨터 구현 방법.
  14. 하나 이상의 프로세서 및 명령들이 인코딩된 하나 이상의 비-일시적 컴퓨터 판독 가능 매체를 포함하는 컴퓨팅 시스템으로서, 상기 명령들은 실행될 때 상기 하나 이상의 프로세서들로 하여금:
    제1 출처의 컨텐츠를 실행하는 제1 실행 컨텍스트와;
    상기 제1 출처와 상이한 제2 출처의 컨텐츠를 실행하는 제2 실행 컨텍스트와; 그리고
    보안 애플리케이션에 의해 구현된 동일-출처 정책에 따라 상기 제1 실행 컨텍스트 및 상기 제2 실행 컨텍스트 각각이 서로의 데이터에 액세스하는 것을 제한하는 보안 애플리케이션을 구현하게 하고,
    상기 제1 실행 컨텍스트 및 상기 제2 실행 컨텍스트는 동작들을 수행함으로써 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 메시지들을 전달하기 위한 양방향 통신 채널을 설정하도록 구성되고, 상기 동작들은,
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 초기 탐색 메시지를 수신하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 초기 탐색 메시지에 기초하여 상기 제2 실행 컨텍스트의 식별자를 결정하는 단계와;
    상기 제2 실행 컨텍스트의 식별자를 사용하여, 상기 양방향 통신 채널의 제1 단방향 서브 채널을 설정하는 단계와, 상기 제1 단방향 서브 채널은 상기 제1 실행 컨텍스트로부터 제2 실행 컨텍스트로 메시지들을 전달하도록 구성되고;
    상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 연결 브로드캐스트 메시지를 수신하는 단계와;
    상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 상기 연결 브로드캐스트 메시지에 기초하여 상기 제1 실행 컨텍스트의 식별자를 결정하는 단계와;
    상기 제1 실행 컨텍스트의 식별자를 이용하여, 상기 양방향 통신 채널의 제2 단방향 서브 채널을 설정하는 단계와, 상기 제2 단방향 서브 채널은 상기 제2 실행 컨텍스트로부터 상기 제1 실행 컨텍스트로 메시지들을 전달하도록 구성되고; 그리고
    상기 제1 실행 컨텍스트에서 제2 실행 컨텍스트로 메시지를 전달하도록 구성된 제1 단방향 서브 채널 및 상기 제2 실행 컨텍스트에서 제1 실행 컨텍스트로로 메시지를 전달하도록 구성된 제2 단방향 서브 채널을 설정한 후, 제1 단방향 서브 채널과 제2 단방향 서브 채널이 연결 상태인지 검증하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  15. 제14항에있어서,
    상기 동작들은,
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트가 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손인지 여부를 체크함으로써 상기 제1 실행 컨텍스트가 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지의 타겟인지 여부를 결정하는 단계와; 그리고
    상기 제2 실행 컨텍스트가 상기 제1 실행 컨텍스트의 자손이라고 식별하는 것에 응답하여:
    (ⅰ) 상기 제1 실행 컨텍스트가 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지의 타겟인 것으로 결정하고 상기 제1 단방향 서브 채널을 설정하도록 진행하는 단계, 및
    (ii) 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 상기 제1 단방향 서브 채널을 설정하도록 선택하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  16. 제14항에 있어서,
    상기 동작들은,
    상기 제1 실행 컨텍스트에서, 상기 제1 출처 이외의 출처의 컨텐츠를 실행하는 제3 실행 컨텍스트로부터 전송된 제2 초기 탐색 메시지를 수신하는 단계와, 상기 제1 실행 컨텍스트와 상기 제3 실행 컨텍스트는 컴퓨팅 시스템에 의해 구현된 동일-출처 정책의 결과로서 서로의 데이터에 액세스하는 것이 각각 제한되며;
    상기 제1 실행 컨텍스트에서, 상기 제3 실행 컨텍스트가 컴퓨팅 시스템상의 실행 컨텍스트들의 계층 구조에서 상기 제1 실행 컨텍스트의 자손인지 여부를 체크함으로써 상기 제1 실행 컨텍스트가 상기 제3 실행 컨텍스트로부터의 상기 제2 초기 탐색 메시지의 타겟인지 여부를 결정하는 단계와; 그리고
    상기 제3 실행 컨텍스트가 상기 제1 실행 컨텍스트의 자손이 아니라고 식별하는 것에 응답하여, 상기 제1 실행 컨텍스트와 상기 제3 실행 컨텍스트 사이에 통신 채널을 설정하지 않도록 상기 제2 초기 탐색 메시지를 폐기하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  17. 제14항에 있어서,
    상기 동작들은,
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터의 상기 초기 탐색 메시지가, 상기 초기 탐색 메시지가 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트의 제1 서비스 사이의 제1 채널의 설정을 개시하는 것임을 나타내는 제1 토큰을 포함하는지 식별하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 제2 초기 탐색 메시지를 수신하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터의 상기 제2 초기 탐색 메시지가, 상기 제2 초기 탐색 메시지가 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트의 제1 서비스와 상이한 상기 제2 실행 컨텍스트의 제1 서비스 사이의 제2 채널의 설정을 개시하는 것임을 나타내는 제2 토큰을 포함하는지 식별하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  18. 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 상기 컴퓨팅 시스템상의 제1 실행 컨텍스트와 상기 컴퓨팅 시스템상의 제2 실행 컨텍스트 사이에 데이터를 전달하기 위한 동작들을 수행하게 하는 저장된 명령들을 갖는 하나 이상의 비-일시적 컴퓨터 판독 가능 매체로서,
    상기 제1 실행 컨텍스트는 제1 출처의 컨텐츠를 실행하도록 구성되고,
    상기 제2 실행 컨텍스트는 상기 제1 출처와 상이한 제2 출처의 컨텐츠를 실행하도록 구성되고,
    상기 제1 실행 컨텍스트 및 상기 제2 실행 컨텍스트는 상기 컴퓨팅 시스템의 동일-출처 정책의 결과로서 서로의 데이터에 액세스하는 것이 제한되며, 상기 동작들은:
    상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 양방향 통신 채널을 설정하는 단계와, 상기 양방향 통신 채널을 설정하는 단계는,
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 초기 탐색 메시지를 수신하는 단계와;
    상기 제1 실행 컨텍스트에서, 상기 제2 실행 컨텍스트로부터 전송된 상기 초기 탐색 메시지에 기초하여 상기 제2 실행 컨텍스트의 식별자를 결정하는 단계와;
    상기 제2 실행 컨텍스트의 식별자를 사용하여, 상기 양방향 통신 채널의 제1 단방향 서브 채널을 설정하는 단계와, 상기 제1 단방향 서브 채널은 상기 제1 실행 컨텍스트로부터 제2 실행 컨텍스트로 메시지들을 전달하도록 구성되고;
    상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 연결 브로드캐스트 메시지를 수신하는 단계와;
    상기 제2 실행 컨텍스트에서, 상기 제1 단방향 서브 채널을 통해 상기 제1 실행 컨텍스트로부터 전송된 상기 연결 브로드캐스트 메시지에 기초하여 상기 제1 실행 컨텍스트의 식별자를 결정하는 단계와;
    상기 제1 실행 컨텍스트의 식별자를 이용하여, 상기 양방향 통신 채널의 제2 단방향 서브 채널을 설정하는 단계와, 상기 제2 단방향 서브 채널은 상기 제2 실행 컨텍스트로부터 상기 제1 실행 컨텍스트로 메시지들을 전달하도록 구성되고; 그리고
    상기 제1 실행 컨텍스트에서 제2 실행 컨텍스트로 메시지를 전달하도록 구성된 제1 단방향 서브 채널 및 상기 제2 실행 컨텍스트에서 제1 실행 컨텍스트로 메시지를 전달하도록 구성된 제2 단방향 서브 채널을 설정한 후, 제1 단방향 서브 채널과 제2 단방향 서브 채널이 연결 상태인지 검증하는 단계를 포함하고; 그리고
    상기 검증된 양방향 통신 채널을 통해 상기 제1 실행 컨텍스트와 상기 제2 실행 컨텍스트 사이에 메시지들을 전달하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  19. 제18항에 있어서,
    상기 동일-출처 정책에 따라, 상기 컴퓨팅 시스템은,
    상기 제1 출처 및 제2 출처의 전송 프로토콜, 어드레스 또는 포트 번호 중 적어도 하나가 서로 상이하다는 것을 식별하는 것에 응답하여 상기 제2 출처를 상기 제1 출처와 상이한 것으로 분류하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
  20. 제18항에 있어서,
    상기 제1 실행 컨텍스트는,
    상기 제1 출처의 컨텐츠를 제시하도록 구성된 제1 윈도우 객체를 포함하고, 상기 제2 실행 컨텍스트는 상기 제2 출처의 컨텐츠를 제시하도록 구성된 제2 윈도우 객체를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 매체.
KR1020197003841A 2017-06-16 2018-03-14 제한된 컴퓨터 환경에서의 교차-출처 통신 KR102156305B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/624,921 US10554692B2 (en) 2017-06-16 2017-06-16 Cross-origin communication in restricted computer environments
US15/624,921 2017-06-16
PCT/US2018/022451 WO2018231304A1 (en) 2017-06-16 2018-03-14 Cross-origin communication in restricted computer environments

Publications (2)

Publication Number Publication Date
KR20190028479A KR20190028479A (ko) 2019-03-18
KR102156305B1 true KR102156305B1 (ko) 2020-09-15

Family

ID=61899370

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197003841A KR102156305B1 (ko) 2017-06-16 2018-03-14 제한된 컴퓨터 환경에서의 교차-출처 통신

Country Status (6)

Country Link
US (2) US10554692B2 (ko)
EP (1) EP3482333B1 (ko)
JP (2) JP6790231B2 (ko)
KR (1) KR102156305B1 (ko)
CN (2) CN109804377B (ko)
WO (1) WO2018231304A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452762B1 (en) * 2017-02-21 2019-10-22 United Services Automobile Association (Usaa) Coordinating in-frame content with page content in applications
US10452738B1 (en) * 2017-02-21 2019-10-22 United Services Automobile Association (Usaa) Coordinating in-frame content with page content in applications
US10554692B2 (en) 2017-06-16 2020-02-04 Google Llc Cross-origin communication in restricted computer environments
US11206273B2 (en) * 2018-01-31 2021-12-21 Salesforce.Com, Inc. Content management system connect
WO2019217140A1 (en) * 2018-05-07 2019-11-14 Google Llc Immersive web-based simulator for digital assistant-based applications
US10678615B1 (en) 2018-05-22 2020-06-09 Express Scripts Strategic Development, Inc. Interconnected framework for distributed data realization
US11354369B2 (en) * 2019-08-13 2022-06-07 Raytheon Company Multi-headed web-application architecture and messaging structure
US11171926B2 (en) * 2019-09-04 2021-11-09 Microsoft Technology Licensing, Llc Secure communication between web frames
US11755720B2 (en) 2020-01-31 2023-09-12 Salesforce, Inc. Secure membranes and cross namespace communication
US11611629B2 (en) * 2020-05-13 2023-03-21 Microsoft Technology Licensing, Llc Inline frame monitoring
US11677739B2 (en) * 2021-06-25 2023-06-13 Microsoft Technology Licensing, Llc Token brokering in parent frame on behalf of child frame
US11882113B2 (en) 2021-06-29 2024-01-23 Microsoft Technology Licensing, Llc Token brokering in a descendant frame

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110188499A1 (en) * 2010-02-04 2011-08-04 Cisco Technology, Inc. Point-to-multipoint path implementation in a multicast virtual private network
US20130173720A1 (en) * 2011-08-26 2013-07-04 Salesforce.Com, Inc. Computer implemented methods and apparatus for providing communication between network domains in a service cloud
US20150350253A1 (en) * 2014-05-29 2015-12-03 Livestax Limited Communication between frames of a web browser

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3055268B2 (ja) 1990-12-05 2000-06-26 日産化学工業株式会社 ウラシル誘導体および除草剤
US6957416B2 (en) 2001-01-31 2005-10-18 Hewlett-Packard Development Company, L.P. Document builder classes and methods
US7715377B2 (en) 2002-01-03 2010-05-11 Integrated Device Technology, Inc. Apparatus and method for matrix memory switching element
US20040210536A1 (en) 2002-12-18 2004-10-21 Tino Gudelj Cross-domain transactions through simulated pop-ups
JP2005017453A (ja) * 2003-06-24 2005-01-20 Murata Mach Ltd 画像形成装置
US8280819B2 (en) 2004-07-09 2012-10-02 Ebay Inc. Method and apparatus for securely displaying and communicating trusted and untrusted internet content
US8005920B2 (en) 2005-08-24 2011-08-23 Postx Corporation Method and apparatus for transmitting arbitrarily large amounts of data over the internet
US7506248B2 (en) 2005-10-14 2009-03-17 Ebay Inc. Asynchronously loading dynamically generated content across multiple internet domains
EP1969478A4 (en) 2005-12-22 2009-09-23 Catalog Com Inc SYSTEM AND METHOD FOR INTERDOMATIVE SOCIAL NETWORKING
US8250082B2 (en) 2006-06-23 2012-08-21 Microsoft Corporation Cross domain communication
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US8001336B2 (en) * 2007-03-02 2011-08-16 International Business Machines Corporation Deterministic memory management in a computing environment
US7958516B2 (en) 2007-04-18 2011-06-07 Google Inc Controlling communication within a container document
US7809785B2 (en) 2007-05-28 2010-10-05 Google Inc. System using router in a web browser for inter-domain communication
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8081603B2 (en) * 2007-07-18 2011-12-20 Qualcomm Incorporated Compression static and semi-static context transfer
US8108770B2 (en) * 2007-08-27 2012-01-31 Yahoo! Inc. Secure inter-module communication mechanism
US20090083768A1 (en) * 2007-09-20 2009-03-26 Hatalkar Atul N Context platform framework for aggregation, analysis and use of contextual information
US9009657B2 (en) 2008-04-20 2015-04-14 Microsoft Technology Licensing, Llc Component-oriented architecture for web mashups
US8291475B2 (en) 2008-04-30 2012-10-16 Microsoft Corporation Secure cross-domain communication for web mashups
US20090299862A1 (en) 2008-06-03 2009-12-03 Microsoft Corporation Online ad serving
US9524344B2 (en) 2008-06-03 2016-12-20 Microsoft Corporation User interface for online ads
US8209706B2 (en) * 2008-06-27 2012-06-26 Microsoft Corporation Inter-frame messaging between different domains
US9459936B2 (en) * 2009-05-01 2016-10-04 Kaazing Corporation Enterprise client-server system and methods of providing web application support through distributed emulation of websocket communications
US8789204B2 (en) * 2009-12-22 2014-07-22 Nokia Corporation Method and apparatus for secure cross-site scripting
EP2548167A4 (en) 2010-03-16 2014-03-05 Appnexus Inc ADVERTISING SERVER AND MEDIA MANAGEMENT PLATFORM
US9558289B2 (en) * 2010-09-30 2017-01-31 Microsoft Technology Licensing, Llc Securely rendering online ads in a host page
US9037963B1 (en) 2011-04-22 2015-05-19 Amazon Technologies, Inc. Secure cross-domain web browser communications
US8365061B1 (en) * 2011-11-02 2013-01-29 Google Inc. Cross-origin communication in browser frames
US10049168B2 (en) 2012-01-31 2018-08-14 Openwave Mobility, Inc. Systems and methods for modifying webpage data
US9286276B2 (en) * 2012-06-11 2016-03-15 Google Inc. System and method of document embedding in collaborative editors
US20140047413A1 (en) 2012-08-09 2014-02-13 Modit, Inc. Developing, Modifying, and Using Applications
US9332090B1 (en) * 2012-09-12 2016-05-03 Kaazing Corporation Communication data padding
GB201218389D0 (en) * 2012-10-12 2012-11-28 Uni I Olso Multi-mode computer with selector
US9038092B2 (en) * 2013-03-06 2015-05-19 Microsoft Technology Licensing, Llc Browser window frame-to-frame communication
US9203891B2 (en) * 2013-03-13 2015-12-01 Qualcomm Incorporated System and method to enable web property access to a native application
US9189466B2 (en) 2013-09-13 2015-11-17 Linkedin Corporation Cross document communication
US8930971B1 (en) * 2013-09-13 2015-01-06 Linkedin Corporation Embedded-advertising content presented in document context
US9349000B2 (en) * 2014-01-27 2016-05-24 Microsoft Technology Licensing, Llc Web service sandbox system
US9864528B2 (en) 2014-10-16 2018-01-09 Microsoft Technology Licensing, Llc Data object observation among domain-restricted containers
US9880869B2 (en) * 2015-01-13 2018-01-30 Owl Cyber Defense Solutions, Llc Single computer-based virtual cross-domain solutions
US20160342977A1 (en) 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
JP6868958B2 (ja) * 2015-12-25 2021-05-12 富士通株式会社 パケット送信プログラム、情報処理装置、および、障害検出方法
US10554692B2 (en) 2017-06-16 2020-02-04 Google Llc Cross-origin communication in restricted computer environments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110188499A1 (en) * 2010-02-04 2011-08-04 Cisco Technology, Inc. Point-to-multipoint path implementation in a multicast virtual private network
US20130173720A1 (en) * 2011-08-26 2013-07-04 Salesforce.Com, Inc. Computer implemented methods and apparatus for providing communication between network domains in a service cloud
US20150350253A1 (en) * 2014-05-29 2015-12-03 Livestax Limited Communication between frames of a web browser

Also Published As

Publication number Publication date
CN116956273B (zh) 2024-06-25
JP2021015635A (ja) 2021-02-12
EP3482333B1 (en) 2019-11-27
WO2018231304A1 (en) 2018-12-20
CN116956273A (zh) 2023-10-27
US20180367572A1 (en) 2018-12-20
EP3482333A1 (en) 2019-05-15
CN109804377A (zh) 2019-05-24
KR20190028479A (ko) 2019-03-18
US10554692B2 (en) 2020-02-04
US20200137120A1 (en) 2020-04-30
CN109804377B (zh) 2023-06-20
US11171993B2 (en) 2021-11-09
JP7125461B2 (ja) 2022-08-24
JP2019532384A (ja) 2019-11-07
JP6790231B2 (ja) 2020-11-25

Similar Documents

Publication Publication Date Title
KR102156305B1 (ko) 제한된 컴퓨터 환경에서의 교차-출처 통신
US11539807B2 (en) Systems and methods for web to mobile app correlation
US8843820B1 (en) Content script blacklisting for use with browser extensions
US10574771B2 (en) Methods and systems for rewriting scripts to redirect web requests
US10771581B2 (en) Systems and methods for handling a cookie from a server by an intermediary between the server and a client
JP6553083B2 (ja) 複数ログインによるブラウザ・ベースの本人情報
US8601468B1 (en) Web-based applications using web extents
US8935755B1 (en) Managing permissions and capabilities of web applications and browser extensions based on install location
US9100337B1 (en) Enabling cookies for a website
US9171076B2 (en) Help information for links in a mashup page
US20130067100A1 (en) Multi-desktop interaction using nested remote desktop sessions
US20150256415A1 (en) Browser notifications
US9372681B1 (en) Redirection of a document URL to a natively-operating application
US20140282032A1 (en) Dynamically configuring user experiences with action uniform resource identifiers
JP2015501496A (ja) ウェブページからのアプリケーションの起動
US10097498B2 (en) System and method for triaging in a message system on send flow
US20150281238A1 (en) Granting permission in association with an application
US9667631B2 (en) Venue-specific wi-fi connectivity notifications
US9805181B1 (en) Messaging channel for web pages and web applications
US10592063B1 (en) Controlling actions for browser extensions
US20140325089A1 (en) Method, terminal, server and system for page jump
US20160248710A1 (en) Facilitating access to references in communications
US20220394063A1 (en) Traffic splitting in kernel for targeted traffic protection
EP3358801B1 (en) Secure content delivery over a domain portal
US9251361B1 (en) Data transmission to an untrusted entity

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant