요약
변경되는 사항
Chrome 70부터 사용자는 확장 프로그램 호스트 액세스를 확장 프로그램을 구성할 수 있습니다.
어떤 API가 영향을 받나요?
이 변경사항은 확장 프로그램의
매니페스트도 지원합니다 호스트 권한이 필요한 API에는 webRequest,
cookies, tabs.executeScript(), tabs.insertCSS(), 교차 출처 실행
요청(예: XMLHTTPRequest
또는 fetch()
API 사용)
액세스 제한
사용자는 어떻게 액세스를 제한할 수 있나요?
사용자는 확장 프로그램이 클릭 시 실행되거나, 특정 사이트 집합에서 또는 모든 사이트에 실행되도록 허용할 수 있습니다.
확인할 수 있습니다. 이 옵션은 chrome://extensions
페이지뿐 아니라 사용자에게도 표시됩니다.
확장 프로그램 컨텍스트 메뉴에서
사용자가 '클릭 시' 확장 프로그램을 실행하도록 선택하면 어떻게 되나요?
확장 프로그램은 기본적으로 activeTab 권한을 사용한 것처럼 동작합니다. 확장 프로그램: 사용자가 확장 프로그램을 클릭하는 모든 호스트에 대한 임시 액세스 권한을 부여함 chrome://settings와 같은 제한된 사이트가 아닌 경우). 클릭 시 실행되도록 설정하면 Chrome은 확장 프로그램이 다음과 같음을 나타내는 원과 그림자 (아래 참조)로 배지를 표시합니다. 액세스를 요청할 수 있습니다.
사용자가 특정 사이트에서 내 확장 프로그램을 실행하도록 선택하면 어떻게 되나요?
확장 프로그램은 사용자가 선택한 모든 사이트에서 자동으로 실행되도록 허용되며 사이트를 다시 표시할 수 있습니다. 확장 프로그램이 요청했지만 사용자가 요청하지 않은 다른 사이트 권한을 부여할 때 사용자가 확장 프로그램을 클릭 시 실행하도록 설정한 것과 동일하게 작동합니다.
사용자가 모든 사이트에서 내 확장 프로그램을 실행하도록 선택하면 어떻게 되나요?
확장 프로그램은 매니페스트에서 요청된 모든 사이트에 자동으로 액세스할 수 있습니다.
API 동작
웹 요청 API
확장 프로그램은 여전히 액세스 권한이 있는 사이트의 모든 요청을 가로채고, 수정하고, 차단할 수 있습니다. 대상 사이트에 액세스할 수 없는 경우 Chrome은 Chrome에서 해당 확장 프로그램에 액세스할 수 있음을 나타내는 확장 프로그램이 페이지에 대한 액세스를 요청합니다. 그런 다음 사용자는 확장 프로그램에 대한 액세스 권한을 부여할 수 있습니다. Chrome 이후 확장 프로그램이 네트워크 요청을 가로챌 수 있도록 사용자에게 페이지를 새로고침하라는 메시지가 표시됩니다.
콘텐츠 스크립트, Tab.executeScript(), tab.insertCSS()
확장 프로그램은 여전히 액세스 권한이 있는 모든 사이트의 스크립트와 스타일 시트를 자동으로 삽입할 수 있습니다. 있습니다. 확장 프로그램이 액세스할 수 없는 사이트의 경우 Chrome은 확장 프로그램에 배지를 표시하여 확장 프로그램이 페이지에 대한 액세스를 요청합니다. 그러면 사용자는 확장 프로그램에 대한 액세스 권한을 부여할 수 있습니다. 만약 콘텐츠 스크립트가 document_idle에 삽입되도록 설정된 경우에는 스크립트가 즉시 삽입됩니다. 그렇지 않으면 Chrome에서 사용자에게 페이지를 새로고침하라는 메시지를 표시하여 확장 프로그램이 스크립트 초기에 스크립트를 삽입할 수 있도록 합니다. (document_start 또는 document_end에서). tabs.executeScript() 및 tabs.insertCSS() 메서드는 사용자가 사이트에 대한 액세스 권한을 부여한 경우에만 호출됩니다.
쿠키 및 백그라운드 페이지 XHR
확장 프로그램은 여전히 모든 쿠키를 읽고 수정할 수 있으며 사이트에서 교차 출처 XHR을 실행할 수 있습니다. 액세스할 수 있습니다. 다른 출처의 계정에 액세스하는 확장 페이지와 연결된 탭이 없기 때문에 쿠키 또는 XHR을 다른 호스트에 전송하는 경우 Chrome은 사용자에게 확장 프로그램이 사이트에 대한 액세스를 요청하는 경우 다른 사이트의 쿠키에 액세스하거나 계정을 확장 프로그램의 매니페스트에 호스트가 포함되지 않은 것처럼 교차 출처 XHR이 실패함 권한을 부여했는지 확인합니다. 이 경우 사용자에게 추가적인 액세스 권한을 제공하도록 선택적인 권한을 사용하는 것이 좋습니다. 여러 사이트에 대한 런타임 액세스 권한을 부여할 수 있습니다
아래 예는 쿠키 API에서 이 기능이 작동하는 방식을 보여줍니다.
변경 전:
{
...
"permissions": ["cookies", "https://example.com"]
}
chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
function(cookie) {
// Use the cookie.
});
변경 후:
{
...
"permissions": ["cookies"],
"optional_permissions": ["https://example.com"]
}
// Note: permissions.request() requires a user gesture, so this
// may only be done in response to a user action.
chrome.permissions.request(
{origins: ['https://example.com']},
function(granted) {
if (granted) {
chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
function(cookie) {
// Use the cookie.
});
} else {
// Handle grant failure
}
});
마이그레이션
부정적인 영향을 받지 않기 위한 권장사항은 무엇인가요?
확장 프로그램은 선택적 권한, activeTab, declarativeContent API를 사용할 수 있습니다. 권장사항을 따르세요 런타임 시 선택적 권한이 부여되며 확장 프로그램이 다음 작업을 할 수 있도록 허용합니다. 사이트에 대한 특정 액세스 권한 요청 activeTab 권한은 영향을 받지 않으며, 계속 정상적으로 작동합니다. declarativeContent API는 많은 요구사항을 대체합니다. 모든 페이지에 스크립트를 삽입할 수 있습니다.
현재 사용자의 계정은 어떻게 되나요? 설정하시겠습니까?
이 변경사항은 확장 프로그램에 부여된 현재 권한에 즉시 영향을 미치지 않습니다. 즉, 사용자가 사이트를 제한하지 않는 한 이전과 동일하게 작동합니다. 볼 수 있습니다. 향후 출시에서는 사용자가 조정할 수 있도록 더 많은 제어 기능을 제공할 예정입니다. 설정을 변경할 수 있습니다.
확장 프로그램이 사이트에서 실행할 권한이 있는지 확인하려면 어떻게 해야 하나요?
permissions.contains() API를 사용하여 확장 프로그램이 제대로 설정되었는지 확인할 수 있습니다. 특정 출처에 대한 액세스 권한이 부여됩니다