Ошибки политики безопасности с Automator, выполняющим JavaScript с Safari

Я использую следующий скрипт Automator:

on run {input, parameters}
    set updateCount to 0
    read (item 1 of input)
    set ps to paragraphs of the result
    set tot to count ps
    set TLFile to (("Users:Admin:Desktop:") as text) & "titleList.txt"
    set TLLines to paragraphs of (read file TLFile as «class utf8»)
    set descFile to (("Users:Admin:Desktop:") as text) & "descList.txt"
    set DescLines to paragraphs of (read file descFile as «class utf8»)
    tell application "Safari"
        reopen
        activate
    end tell
    repeat with i from 1 to tot
        set p to item i of ps
        if p is not "" then
            try
                tell application "Safari"
                    tell front window
                        set r to make new tab with properties {URL:p}
                        set current tab to r
                        set titleVal to item i of TLLines
                        set descVal to item i of DescLines
                        set updateCount to updateCount + 1
                        do shell script "echo The value: " & updateCount
                        delay 12
                        do JavaScript "document.getElementsByName('title')[0].value = '" & titleVal & "'; document.getElementsByName('description')[1].value = '" & descVal & "'; 
                                      document.getElementsByClassName('save-changes-button')[0].removeAttribute('disabled');
                                      document.getElementsByClassName('save-changes-button')[0].click();" in current tab
                        delay 4
                        close current tab
                        if updateCount is equal to 10 then
                            say "hi"
                            set updateCount to 0
                            delay 90
                        end if
                        if i = tot then exit repeat
                        repeat
                            delay 4
                            get URL of r
                        end repeat
                    end tell
                end tell
            end try
        end if
    end repeat
end run

Я смог запустить этот скрипт с YouTube на Safari несколько месяцев назад без проблем. Теперь он не выполняет действия JavaScript. Ошибки появляются в инспекторе Safari:

  1. "Список источников для директивы Content Security Policy 'script-src' содержит недопустимый источник: ''strict-dynamic''. Он будет проигнорирован. PostmessageRelay: 0"
  2. "Отказ от выполнения скрипта, потому что его хеш, одноразовый номер или" unsafe-inline "не указаны в директиве script-src Политики безопасности контента".

Как я могу обойти эти ошибки, чтобы мой сценарий мог работать?

1 ответ

Решение

Как показывает ошибка №2 в вопросе, исправление, чтобы заставить политику работать в Safari на данный момент, состоит в том, чтобы изменить ее, указав хэш или одноразовый номер для соответствующего скрипта, или добавить 'unsafe-inline',

В браузерах, которые поддерживают 'strict-dynamic', 'unsafe-inline' часть будет игнорироваться.

Причиной обеих ошибок является то, что Safari еще не поддерживает 'strict-dynamic', Смотрите следующее:

Все это говорит о том, что из текущей информации в вопросе, где на самом деле указана действующая политика CSP, не ясно. Так что, если вы уже не знаете, где это, я думаю, что первый шаг - определить, где указана политика, и изменить ее там.

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