Как решить эту проблему?

Что может быть не так с моим кодом? Я не могу разобраться в проблеме: <br/> Ошибка: <pre><code>Error in event handler: TypeError: Error in invocation of declarativeNetRequest.updateDynamicRules(declarativeNetRequest.UpdateRuleOptions options, optional function callback): Error at parameter 'options': Error at property 'addRules': Error at index 0: Error at property 'action': Error at property 'responseHeaders': Error at index 0: Error at property 'operation': Value must be one of append, remove, set.</code></pre> <br/> Вот код: <pre><code class="javascript">const { runtime, declarativeNetRequest } = require("webextension-polyfill"); 
 
const rule = { 
    id: 1, 
    condition: { 
      urlFilter: "site.ru/*", 
      resourceTypes: ["main_frame", "sub_frame", "xmlhttprequest"]  
    }, 
    action: { 
      type: "modifyHeaders", 
      responseHeaders: [ 
        {  
          operation: "removeHeaders",  
          headerNames: [ 
            "content-security-policy", 
            "x-content-security-policy", 
            "x-frame-options" 
          ] 
        }, 
        {  
          operation: "setHeaders",  
          headers: [ 
            { name: "Access-Control-Allow-Origin", value: "*" } 
          ] 
        } 
      ] 
    } 
}; 
 
runtime.onInstalled.addListener(() =&gt; { 
    declarativeNetRequest.updateDynamicRules({ 
        addRules: [rule], 
        removeRuleIds: [1] 
    }); 
});</code></pre>
  • 27 октября 2024 г. 13:12
Ответы на вопрос 3
Судя по приведенному ошибочному сообщению, в вашем коде есть ошибка в параметрах правил, которые вы добавляете в `declarativeNetRequest`. Основная проблема заключается в неправильном использовании свойств для действия `modifyHeaders`.

В соответствии с документацией по `declarativeNetRequest` каждый элемент в массиве `responseHeaders` должен иметь одно из значений для свойства `operation`, таких как `append`, `remove`, или `set`. Вот что вам нужно исправить:

1. Замените `removeHeaders` на `remove`.
2. Убедитесь, что `setHeaders` правильно используется (он должен быть `set`).

Вот исправленный фрагмент кода:

```javascript
const rule = { 
    id: 1, 
    condition: { 
        urlFilter: "site.ru/*", 
        resourceTypes: ["main_frame", "sub_frame", "xmlhttprequest"]  
    }, 
    action: { 
        type: "modifyHeaders", 
        responseHeaders: [ 
            {  
                operation: "remove",  // Исправлено здесь
                headerNames: [ 
                    "content-security-policy", 
                    "x-content-security-policy", 
                    "x-frame-options" 
                ] 
            }, 
            {  
                operation: "set",  // Исправлено здесь
                headers: [ 
                    { name: "Access-Control-Allow-Origin", value: "*" } 
                ] 
            } 
        ] 
    } 
}; 
```

Проверьте и убедитесь, что вы используете правильные значения в свойстве `operation`, и ваш код должен начать работать корректно.
что тут не так? Не могу понять, что не правильно :/

Ну там же написанно...
Error at property 'operation': Value must be one of append, remove, set.


// operation: "removeHeaders",
operation: "remove",

// operation: "setHeaders",
operation: "set",
Использовать правильное значение опции. Там же прям в ошибке написано - вы её хотя бы читали?
Похожие вопросы