Проблема безопасного / небезопасного просмотра - PullRequest
1 голос
/ 02 марта 2012

Я занимаюсь разработкой приложения для Facebook, которое включает в себя наши проигрыватели Brightcove (видео-хост) и их API.Facebook дает пользователям возможность безопасного просмотра, и это создает небольшую проблему.В настоящее время я могу заставить приложение работать должным образом по одному из протоколов (http или https), но не по обоим.

https://www.facebook.com/atlantafalcons?sk=app_292392080815275 (измените на http: //, чтобы увидеть его нетработает)

Если я установил источник файла BrightcoveExperiences.js в https://sadmin.brightcove.com/js/BrightcoveExperiences.js, то он выдаст ошибки, если кто-то не просматривает браузер безопасно.Если я установлю его на http://admin.brightcove.com/js/BrightcoveExperiences.js, то при безопасном просмотре он выдаст ошибки.

Документация для безопасного встраивания находится здесь: http://support.brightcove.com/en/docs/publishing-brightcove-player-https-page

Есть ли способ обнаружитьесли пользователь просматривает браузер безопасно, чтобы иметь возможность выбрать, какой файл JS загружать, или есть способ заставить пользователей просматривать браузер безопасно?Или есть другой обходной путь для такой проблемы?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Был в состоянии найти решение (спасибо scibuff за рекомендациипроверьте Google Analytics):

<script type="text/javascript">
    var bJsHost = (("https:" == document.location.protocol ) ? "https://sadmin." : "http://admin.");
    document.write(unescape("%3Cscript src='" + bJsHost + "brightcove.com/js/BrightcoveExperiences.js' type='text/javascript'%3E%3C/script%3E"));
</script>

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Использовать относительный к схеме URI:

//admin.brightcove.com/js/BrightcoveExperiences.js

И не используйте разные имена хостов для экземпляров SSL и не-SSL.

(или пусть sadmin ответит перенаправлением 301 администратору для запросов без SSL)

0 голосов
/ 02 марта 2012

Я бы согласился с предложением Квентина.Хотя, используя ваше предложение, вы можете использовать:

// window, top, self, document, others?
window.location.protocol

Другими словами:

if (window.location.protocol == 'http:') {
    document.body.innerHTML = 'The page is using the http (non-secure) protocol.';
} else {
    document.body.innerHTML = 'The page is using the https (secure) protocol.';
}

http://jsfiddle.net/3NREg/

Другие объекты окна / документа могут также работатьв зависимости от того, что вам нужно:

// window, top, self, document, others?
if (self.location.protocol == 'http:') {
    document.body.innerHTML = 'The page is using the http (non-secure) protocol.';
} else {
    document.body.innerHTML = 'The page is using the https (secure) protocol.';
}

http://jsfiddle.net/3NREg/1/

...