Problema de navegação seguro/não seguro

Estou a desenvolver uma aplicação no Facebook que incorpora os nossos jogadores da Brightcove e a sua API. O Facebook dá aos usuários a opção de navegar de forma segura e isso coloca um pouco de problema. Como está, eu posso fazer com que o aplicativo funcione corretamente em um dos protocolos (http ou https), mas não em ambos.

Https://www.facebook.com/atlantafalcons?sk=app_292392080815275 (mudar para http:// para ver que não funciona)

Se eu definir o BrightcoveExperiences.código do ficheiro js para https://sadmin.brightcove.com/js/BrightcoveExperiences.js então ele lança erros quando alguém não está navegando de forma segura. Se o puser em http://admin.brightcove.com/js/BrightcoveExperiences.js então ele lança erros quando alguém está navegando com segurança.

a documentação para incorporar de forma segura está aqui: http://support.brightcove.com/en/docs/publishing-brightcove-player-https-page

Existe uma maneira de detectar se o Utilizador está a navegar de forma segura para poder escolher qual o ficheiro JS a carregar ou existe uma forma de obrigar os utilizadores a navegar de forma segura? Ou há outra solução para um problema como este?

Obrigado antecipadamente!

editar: Foi capaz de encontrar uma solução (graças ao scibuff por recomendar a verificação do 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>
Author: RGilkes, 2012-03-02

2 answers

Utilizar um esquema-URI relativo:

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

E não use nomes de máquinas diferentes para as instâncias SSL e não-SSL.

(ou fazer com que a sadmin responda com um redireccionamento 301 para a administração para pedidos não-SSL)

 2
Author: Quentin, 2012-03-02 16:56:35
Concordo com a sugestão do Quentin. Embora, usando a sua sugestão, possa usar:
// window, top, self, document, others?
window.location.protocol

Por outras palavras:

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/

Outros objectos da janela/documento também podem funcionar, dependendo do que precisar:

// 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/

 0
Author: Jared Farrish, 2012-03-02 17:02:18