Auto-complete not working under https
-
My website has ssl, and i get this msg when trying to retrieve the infos from the CEP
[blocked] The page at https://www.stoza.com.br/minha-conta/editar-endereco/?address=billing ran insecure content from http://www.toolsweb.com.br/webservice/clienteWebService.php?cep=88037040&formato=javascript&_= …..
Also the mask input is not working too! i guess because im using jquery1.9.1
http://ww.wp.xz.cn/extend/plugins/woocommerce-extra-checkout-fields-for-brazil/
-
i’ve updated de jquery.maskedinput.js to the new version and work ok now.. just the autocomplete is not working under ssl!
Thanks for the warning, I’ll look into it tonight.
I checked here and seems to be working correctly.
Maybe it’s something on your server.Olá, Claudio.
Realmente, de baixo de SSL o autocomplete não funciona. Pelo que vi, isto está ocorrendo, pois a chamada Ajax para o site toolsweb.com.br (CEP) está sendo feita em HTTP (e não HTTPS). Os navegadores modernos como Chrome e Firefox estão bloqueando scripts, css, plugins e fontes com este tipo de comportamento. Só não bloqueiam imagens, música e vídeo.
*** ERRO (Firebug)
detailed error: Bloqueado carregamento de conteúdo ativo mesclado “http://www.toolsweb.com.br/webservice/clienteWebService.php?cep=70742000&formato=javascript&_=1378943284684”*** AVISO MOZILLA
Non-SSL active content on SSL pages is blocked by defaultBug 834836 – Turn on pref to block mixed active content
Firefox 18 introduced preferences to block loading content from non-SSL (http) sites on SSL (https) pages. One of those preferences, security.mixed_content.block_active_content is now enabled by default in order to enhance user security. That means insecure scripts, stylesheets, plug-in contents, <iframe>, XMLHttpRequest, Web fonts (@font-face) and WebSockets are blocked on secure pages, and a notification is displayed instead. It will not block “display content” like images, videos or audio. See Tanvi Vyas’ blog post for details.Mais um detalhe.
Como o serviço de consulta a CEP não é oferecido em HTTPS pela http://www.toolsweb.com.br, então fica complicado.
No Site “Stack Overflow” alguns comentários sugerem para omitir o protocolo “http://” e deixar somente o “//” na linha 18 do arquivo “jquery.address.autocomplete.js”:
$.getScript('//www.toolsweb.com.br/webservice/clienteWebService.php?cep='Testei isto e não funcionou, justamente por ele provavelmente assumir o protocolo HTTPS da requisição, mas que não existe em toolsweb.com.br.
Sim ele não oferece https.
Estou migrado aqui para o https://correiosapi.apphb.com/
Exatamente, basta ocultar e deixar apenas // que funciona.
Hoje já sai a versão nova com essa nova api.O complicado e se esse cara sair do ar xD
Pesquisei 15 soluções diferentes e só ele tem ssl.
Da para fazer interno no WordPress.
Consultar ajax dentro do WordPress e na função do ajax usar wp_remote_get para consultar qualquer uma dessas apis e retornar o resultado.Vantagem que faz a consulta pelo php e usando o WordPress, desta forma da até para cachear os resultados se quiser e também não vai ter problema com ssl.
Entretanto duplica o tempo de resposta quando for consultar.Valeuuu, excelente!
Exatamente, acho que uma solução seria fazer a chamada Ajax do “jquery.address.autocomplete.js” para um arquivo PHP dentro do próprio plugin, e dentro desse PHP fazer algo como:
file_get_contents('http://www.toolsweb.com.br/webservice/clienteWebService.php?cep=70742100&formato=javascript&_=1378943284684')Daí acredito que resolveria… o que acha?
Melhor não é usar file_get_contents() e sim wp_remote_get(), assim não tem risco de parar. Porque alguns servidores bloqueam o file_get_contents ou cURL xD
Já o wp_remote_get() vai funcionar em praticamente 99% dos lugares.Ok…
Aproveitando que vai atualizar o plugin autocomplete, gostaria de sugerir uma alteração que sempre faço depois que atualizo o plugin, já que tudo é sobrescrito.
Basicamente é fazer o autocomplete ser executado somente se o campo endereço estiver em branco, pois às vezes o cliente ajusta o endereço e o autocomplete desfaz.
No meu caso, quando o sistema entra na página de Checkout eu já deixo o foco no campo CEP, que só faz o autocomplete se o campo endereço estiver vazio, justamente para não apagar algum ajuste que o cliente tenha feito no endereço.
O ajuste muitas vezes é necessário, pois a resposta do servidor pode não vir coerente, como acontece com os endereços de Brasília, que no logradouro vem algo como “SQN 113 Bloco X”, sendo que 113 é o número (e não o logradouro)
Mas claro, é só uma sugestão…
No caso, apenas coloco este código no início da função “addressAutoComplete(field)”
if ( ($('#' + field + '_address_1').val()).length > 0 ) return false;Falou!
Agora sim, tudo corrigido na versão 2.6.1.
Funcionando com HTTPS e também não tenta completar o endereço caso ele esteja já preenchido.Muito bom, Claudio. Atualizei, testei e está aprovado. Parabéns!
The topic ‘Auto-complete not working under https’ is closed to new replies.