Как добавить заголовок «Referer» к сетевым вызовам, выполняемым в расширениях, созданных с использованием манифеста V3?

Я разработал расширение Chrome, используя манифест v3. Я открываю iframe в сценарии контента, и из iframe выполняется несколько сетевых вызовов. Я вижу, что у этих вызовов нет заголовка. Чтобы решить эту проблему, я использовалdeclarativeNetRequest.

у меня это есть вmanifest.json

       "permissions": ["scripting", "activeTab", "contextMenus", "storage", "tabs", "declarativeNetRequestWithHostAccess",
  "declarativeNetRequestFeedback"]

Используя этот фрагмент кода в моемservice workerдобавить заголовок

      async function addRefererToRequestHeader() {
  const ruleId = Math.floor(Math.random() * 1000000); // Generate a random number as the rule ID

  const rules = [{
    id: ruleId,
    action: {
      type: 'modifyHeaders',
      requestHeaders: [
        {
          header: 'New-Referer',
          operation: 'set',
          value: 'https://example.com/*',
        },
      ],
    },
    condition: {
      resourceTypes: ['sub_frame'],
      urlFilter: 'https://example.com/*',
    },
  }];

  try {
    await browser.declarativeNetRequest.updateDynamicRules({
      removeRuleIds: [],
      addRules: rules,
    });

    console.log('Rules added successfully.');
  } catch (error) {
    console.error('Error adding rules:', error);
  }
}

Но, видимо, вызовhttps://example.com/*не содержит заголовка. Можно ли вообще добавитьRefererзаголовок? Если да, то как? Каковы последствия этого для безопасности?

PS: я использую браузер webextension polyyfills.

0 ответов

Другие вопросы по тегам