activeTab
권한은 사용자가 확장 프로그램을 호출할 때(예: 브라우저 작업 클릭) 확장 프로그램이 현재 활성 탭에 일시적으로 액세스할 수 있도록 합니다. 탭 액세스는 사용자가 페이지에 있는 동안 지속되고 사용자가 다른 페이지로 이동하거나 탭을 닫으면 취소됩니다.
이는 <all_urls>
를 많이 사용하는 대신 사용할 수 있지만 설치 중에 경고 메시지 없음을 표시합니다.
참고: M72부터는 사용자가 다른 출처로 이동할 때까지 activeTab
권한이 부여됩니다. 즉, 사용자가 https://example.com에서 확장 프로그램을 호출한 후 https://example.com/foo로 이동하면 확장 프로그램에서 페이지에 계속 액세스할 수 있습니다. 사용자가 https://chromium.org로 이동하면 액세스가 취소됩니다.
activeTab
가 없는 경우:
activeTab
를 사용합니다.
예
Page Redder 샘플 확장 프로그램을 참고하세요.
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Make this page red"
},
"manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
// No tabs or host permissions needed!
console.log('Turning ' + tab.url + ' red!');
chrome.tabs.executeScript({
code: 'document.body.style.backgroundColor="red"'
});
});
동기
브라우저 작업 및 컨텍스트 메뉴 항목이 있는 웹 클리핑 확장 프로그램을 생각해 보세요. 이 확장 프로그램은 브라우저 작업을 클릭하거나 컨텍스트 메뉴 항목이 실행될 때만 실제로 탭에 액세스해야 할 수 있습니다.
activeTab
가 없으면 확장 프로그램에서 모든 웹사이트에 대한 영구적인 전체 액세스 권한을 요청해야 합니다. 그래야만 사용자가 확장 프로그램을 호출할 경우 확장 프로그램이 제대로 작동합니다. 이처럼 간단한 확장 프로그램을 믿고 맡길 수 있습니다. 또한 확장 프로그램이 손상된 경우 공격자는 확장 프로그램의 모든 항목에 액세스할 수 있습니다.
반면에 activeTab
권한이 있는 확장 프로그램은 명시적인 사용자 동작에 대한 응답으로 탭 액세스 권한만 얻습니다. 확장 프로그램이 손상된 경우 공격자는 사용자가 확장 프로그램을 호출할 때까지 기다린 후에 액세스 권한을 얻어야 합니다. 이 액세스 권한은 탭을 탐색하거나
닫을 때까지만 유지됩니다
ActiveTab에서 허용되는 항목
탭에 activeTab
권한이 사용 설정되어 있으면 확장 프로그램에서 다음 작업을 할 수 있습니다.
- 해당 탭에서
tabs.executeScript
또는tabs.insertCSS
를 호출합니다. tabs.Tab
객체를 반환하는 API를 통해 이 탭의 URL, 제목, 파비콘을 가져옵니다. 기본적으로activeTab
는tabs
권한을 일시적으로 부여합니다.- webRequest API를 사용하여 탭에서 탭의 기본 프레임 원본에 대한 네트워크 요청을 가로챕니다. 확장 프로그램이 일시적으로 탭의 기본 프레임 원본에 대한 호스트 권한을 가져옵니다.
activeTab 호출
다음 사용자 동작은 activeTab
를 사용 설정합니다.
- 브라우저 작업 실행
- 페이지 작업 실행
- 컨텍스트 메뉴 항목 실행
- Commands API에서 단축키 실행
- 검색주소창 API의 추천 검색어 수용