Моя кнопка «iframe» для запуска IFTTT Webhook работает на Chrome, но не на Firefox. Есть ли более правильный / надежный метод? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть работающий сервер IIS / игровая площадка, и я использую в HTML способы удаленной активации моих источников света в качестве подтверждения концепции.Мое мышление таково: если я смогу заставить эту работать, я смогу разумно заставить работать и многие другие более сложные вещи.

Хорошие новости - Я 'я могу использовать кнопку на моей странице, чтобы вызвать IFTTT на Chrome и заставить свет рандомизировать цвет по назначению, плохие новости , он не работает в Firefox, и я даже не уверен, что это хорошо (рев будущем.

У меня есть подозрения, что это связано с Content-Security-Policy и встроенной активацией iframe, но я не знаю достаточно об этих вещах, чтобызнаю 1) если я иду в правильном направлении и 2) где именно разваливается.Я реорганизовал мой код, чтобы он стал немного более модульным в соответствии с некоторыми указаниями, приведенными здесь:

https://developers.google.com/web/fundamentals/security/csp/

, и я также добавил настраиваемый заголовок ответа HTTP через IIS, который по сути выглядитContent-Security-Policy: script-src http://example.net 'self'

Существует 3 файла, взаимодействующих друг с другом: «index.html» для страницы / кнопки, которая вызывает «button.js», «button.js» для функции iframe, которая вызывает «test».php "и" test.php "для закрытого ключа / ссылки, которая должна открываться / обновляться через номинально невидимый iframe.

index.html содержит это:

<script src='button.js'></script>
<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" id="button">
Randomize the Light Color in Simon's Room
    <div id="iframeHolder"/>
</button>

(Часть mdl относится к Google Material Design Lite, который импортирован в другое место в скрипте, хотя это может быть просто обычная кнопка)

На практике это правильно создает кнопку, которая выглядит следующим образом: https://i.imgur.com/SL1APTp.png

Файл button.js содержит следующее:

    $(function(){
        $('#button').click(function(){ 
            if(!$('#iframe').length) {
                $('#iframeHolder').html('<iframe id="iframe" src="http://REDACTED.net/test.php" width="0" height="0" border="0" border-width="0"></iframe>');
                } 
                  iframe.contentWindow.location.reload();
                });   
                });

Где «УДАЛЕНО» - это домен моего сайта

Test.php содержит это:

<?php
$ifttturl = 
  file('https://maker.ifttt.com/trigger/web_switch/with/key/REDACTED');
?>

Где "УДАЛЕНО" - это мой ключ из 43 символовПерейдите в мою учетную запись IFTTT.

Примечание. Посещения "https://maker.ifttt.com/trigger/web_switch/with/key/REDACTED" или обновления страницы по этой ссылке достаточно, чтобы правильно запустить веб-крючок, но призыв сделать это с помощью кнопки неоставить исходную веб-страницу на пустом экране.

В Chrome эта точная настройка уже работает идеально .В Firefox это происходит без фанфар или ошибок - кнопка нажата и ничего не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...