매니페스트 업데이트

V2 매니페스트를 V3 매니페스트로 변환

Manifest V3에서 manifest.json 파일은 Manifest V2와 약간 다른 형식이 필요합니다. 이 페이지에서는 manifest.json 파일에만 영향을 미치는 변경사항을 설명합니다. 하지만 대부분의 스크립트 및 페이지 변경사항은 매니페스트도 변경해야 합니다. 이러한 변경사항은 해당 변경사항이 필요한 마이그레이션 작업에 적용됩니다.

매니페스트 버전 번호 변경

"manifest_version" 필드의 값을 2에서 3으로 변경합니다.

Manifest V2
{
  ...
  "manifest_version": 2
  ...
}
Manifest V3
{
  ...
  "manifest_version": 3
  ...
}

호스트 권한 업데이트

Manifest V3의 호스트 권한은 별도의 필드입니다. "permissions" 또는 "optional_permissions"에 호스트 권한을 지정하지 않습니다.

콘텐츠 스크립트"content_scripts.matches"로 유지됩니다. "content_scripts.matches"에 관한 자세한 내용은 정적 선언으로 삽입을 참고하세요.

Manifest V2
{
  ...
  "permissions": [
    "tabs",
    "bookmarks",
    "https://www.blogger.com/",
  ],
  "optional_permissions": [
    "unlimitedStorage",
    "*://*/*",
  ]
  ...
}
Manifest V3
{
  ...
  "permissions": [
    "tabs",
    "bookmarks"
  ],
  "optional_permissions": [
    "unlimitedStorage"
  ],
  "host_permissions": [
    "https://www.blogger.com/",
  ],
  "optional_host_permissions": [
    "*://*/*",
  ]
  ...
}

웹에서 액세스할 수 있는 리소스 업데이트

웹 액세스 가능 리소스는 웹페이지 또는 다른 확장 프로그램에서 액세스할 수 있는 확장 프로그램 내의 파일입니다. Manifest V2에 구현된 "web_accessible_resources" 필드에서는 확장 프로그램이 리소스를 노출하도록 선택한 경우 웹사이트와 공격자가 확장 프로그램을 감지할 수 있도록 했습니다. 이로 인해 디지털 지문 수집 또는 의도하지 않은 리소스 액세스 기회가 생성되었습니다.

Manifest V3는 확장 프로그램의 리소스에 액세스할 수 있는 웹사이트 및 확장 프로그램을 제한하여 노출을 제한합니다. 이전과 같이 파일 목록을 제공하는 대신 이제 객체의 배열을 제공합니다. 각 객체는 리소스 집합을 URL 또는 확장 프로그램 ID 집합에 매핑합니다.

아래 예시에서는 Manifest V2와 Manifest V3 간에 웹에서 액세스 가능한 리소스를 비교합니다. Manifest V2에서는 기본적으로 모든 웹사이트에서 지정된 리소스에 액세스할 수 있었습니다. 아래의 Manifest V3 코드에서 이러한 리소스는 https://example.com에서만 사용할 수 있으며, 특정 이미지만 모든 웹사이트에서 사용할 수 있습니다.

자세한 내용은 웹에서 액세스 가능한 리소스일치 패턴을 참고하세요.

Manifest V2
{
  ...
  "web_accessible_resources": [
    "images/*",
    "style/extension.css",
    "script/extension.js"
  ],
  ...
}
Manifest V3
{
  ...
    "web_accessible_resources": [
    {
      "resources": [
        "images/*"
      ],
      "matches": [
        "*://*/*"
      ]
    },
    {
      "resources": [
        "style/extension.css",
        "script/extension.js"
      ],
      "matches": [
        "https://example.com/*"
      ]
    }
  ],
  ...
}