У меня есть работающий сервер 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 это происходит без фанфар или ошибок - кнопка нажата и ничего не происходит.