JavaScript Remoto
Descrição do livro
Há um pouco de arte na criação de JavaScript remoto – scripts incorporáveis e que podem ser conectados a qualquer website. Devem ser facilmente adaptáveis a ambientes hostis, coexistir com outros aplicativos e administrar as vulnerabilidades complexas de segurança, que surgem quando recursos e arquivos com códigos são servidos a partir de endereços remotos na web. Faça isso corretamente e você terá opções ilimitadas para distribuir seus aplicativos.
Este livro único mostra como conseguir isso. Exemplos de scripts remotos que são incorporados nos sites mundo afora: o sistema de comentários da Disqus, o monitoramento do Google Analytics e o botão Curtir do Facebook.
O livro JavaScript Remoto descreve os detalhes da construção de aplicativos JavaScript remotos completos. Você aprenderá técnicas de desenvolvimento de widgets que colhem dados de tráfego, oferecem camadas e diálogos úteis ou que implementam recursos como bate-papo e comentários. Os conceitos e exemplos apresentados no livro representam as melhores práticas para esta área emergente, baseados em milhares de horas de desenvolvimento real e resultados obtidos de milhões de usuários.
Conteúdo do livro:
- Desenvolvimento de JavaScript, HTML e CSS livres de conflitos
- Como fazer solicitações entre domínios a partir do navegador
- Como vencer as limitações dos cookies remotos
- Vulnerabilidades de segurança de aplicativos remotos
Escrito para desenvolvedores web que já conhecem JavaScript, este livro não exige conhecimento prévio sobre aplicativos remotos.
“Escrito por dois dos melhores desenvolvedores e especialistas no assunto.”
– Do prefácio de Paul Irish, Relações com desenvolvedores Google Chrome e jQuery
“Leitura obrigatória para qualquer desenvolvedor JavaScript sério.”
– Brian Forester, ProQuest
“Ótimas informações sobre aplicativos de front-end distribuídos para web!”
– Sopan Shewale, Saba Software
“Explica de forma clara as complexidades do JavaScript remoto.”
- Jake McCrary, DRW Trading Group
Ver menos ▲Sumário
- Introdução
- Prefácio
- Agradecimentos
- Sobre este livro
- Sobre os autores
- Sobre a ilustração da capa
- Capítulo 1 ■ Introdução ao JavaScript remoto
- 1.1 Definição de JavaScript remoto
- 1.2 Os muitos empregos do JavaScript remoto
- 1.2.1 Widgets incorporados
- 1.2.2 Análise e métrica de tráfego
- 1.2.3 Wrappers de API de web services
- 1.3 Desenvolvimento de um widget básico
- 1.3.1 Geração de JavaScript em servidor
- 1.3.2 Distribuição de widgets como iframes
- 1.4 Desafios do desenvolvimento de sistemas remotos
- 1.4.1 Contexto desconhecido
- 1.4.2 Ambiente compartilhado
- 1.4.3 Restrições de navegadores
- 1.5 Resumo
- Capítulo 2 ■ Distribuição e carregamento do seu aplicativo
- 2.1.1 Página de testes do provedor de conteúdo
- 2.1.2 Servidor web
- 2.1.3 Simulação de domínios múltiplos
- 2.2 Carregamento do script inicial
- 2.2.1 Inclusão de script com bloqueio
- 2.2.2 Scripts sem bloqueio com async e defer
- 2.2.3 Inserção dinâmica de script
- 2.3 Arquivo de script inicial
- 2.3.1 Apelidos para window e undefined
- 2.3.2 Fluxo básico de aplicativo
- 2.4 Carregamento de arquivos adicionais
- 2.4.1 Arquivos JavaScript
- 2.4.2 Bibliotecas
- 2.5 Passagem de argumentos aos scripts
- 2.5.1 Utilização da query string
- 2.5.2 Utilização do identificador de fragmento
- 2.5.3 Utilização de atributos de dados personalizados
- 2.5.4 Utilização de variáveis globais
- 2.6. Busca de dados do aplicativo
- 2.7 Resumo
- Capítulo 3 ■ Apresentação de HTML e CSS
- 3.1 Geração de HTML
- 3.1.1 Utilização do document write
- 3.1.2 Anexar em um local conhecido
- 3.1.3 Anexação de widgets múltiplos
- 3.1.4 Separação dos alvos de apresentação
- 3.2 Aplicação de estilo ao HTML
- 3.2.1 Estilos em linha (inline)
- 3.2.2 Carregamento de arquivos CSS
- 3.2.3 Incorporação de CSS no JavaScript
- 3.3 HTML e CSS defensivos
- 3.3.1 Namespaces
- 3.3.2 Especificidades do CSS
- 3.3.3 Definição redundante de CSS
- 3.4 Incorporação de conteúdo em iframes
- 3.4.1 Iframes src-less
- 3.4.2 Iframes externos
- 3.4.3 Herança de estilos
- 3.4.4 Quando não usar os iframes?
- 3.5 Resumo
- 3.1 Geração de HTML
- Capítulo 4 ■ Comunicação com o servidor
- 4.1 O AJAX e a política de mesma origem dos navegadores
- 4.1.1 Regras de determinação de mesma origem
- 4.1.2 Política de mesma origem e carregamento de scripts
- 4.2 JSON com padding (JSONP)
- 4.2.1 Carregamento de JSON por meio de elementos de scripts
- 4.2.2 Funções de callback dinâmicas
- 4.2.3 Limitações e problemas de segurança
- 4.3 Proxies de subdomínios
- 4.3.1 Alteração da origem do documento com document domain
- 4.3.2 Mensagens entre origens por meio de proxies de subdomínio
- 4.3.3 Combinação de proxies de subdomínio com JSONP
- 4.3.4 O Internet Explorer e os proxies de subdomínio
- 4.3.5 Implicações de segurança
- 4.4 Compartilhamento de recursos entre origens (CORS)
- 4.4.1 Envio de solicitações HTTP simples
- 4.4.2 Transferência de cookies com CORS
- 4.4.3 Envio de preflight request
- 4.4.4 Compatibilidade de navegadores
- 4.5 Resumo
- 4.1 O AJAX e a política de mesma origem dos navegadores
- Capítulo 5 ■ Mensagens em iframes entre domínios
- 5.1 API window postMessage do HTML5
- 5.1.1 Envio de mensagens com window postMessage
- 5.1.2 Recebimento de mensagens enviadas a uma janela
- 5.1.3 Compatibilidade dos navegadores
- 5.2 Técnicas de reversão (fallback)
- 5.2.1 Envio de mensagens com window name
- 5.2.2 Envio de mensagens com identificador de fragmento de URL
- 5.2.3 Envio de mensagens com Flash
- 5.3 Envio simples de mensagens entre domínios com easyXDM
- 5.3.1 Carregamento e início da easyXDM
- 5.3.2 Envio de mensagens simples com eaxyXDM Socket
- 5.3.3 Definição de interfaces JSON-RPC com easyXDM Rpc
- 5.4 Resumo
- 5.1 API window postMessage do HTML5
- Capítulo 6 ■ Autenticação e sessões
- 6.1 Cookies remotos
- 6.1.1 Definição e leitura de sessões
- 6.1.2 Desativação de cookies remotos
- 6.1.3 Internet Explorer e headers P3P
- 6.1.4 Como detectar quando os cookies não estão disponíveis
- 6.2 Como gravar cookies remotos
- 6.2.1 Via janelas dedicadas
- 6.2.2 Solução com iframe (somente para Safari)
- 6.2.3 Sessões de página única para o Chrome e o Firefox
- 6.3 Como proteger as sessões
- 6.3.1 HTTPS e cookies seguros
- 6.3.2 Autenticação multiníveis
- 6.4 Resumo
- 6.1 Cookies remotos
- Capítulo 7 ■ Segurança
- 7.1 Cookies, sessões e roubo de sessões
- 7.2 Scripts entre sites (XSS)
- 7.2.1 Ataques XSS
- 7.2.2 Vulnerabilidades XSS no CSS
- 7.2.3 Defenda seu aplicativo contra ataques XSS
- 7.3 Falsificação de solicitação entre sites
- 7.3.1 Ataques XSRF
- 7.3.2 Roubo de JSON
- 7.3.3 Defesa do seu aplicativo contra ataques XSRF
- 7.4 Vulnerabilidades no provedor de conteúdo
- 7.4.1 Falsificação de provedor de conteúdo
- 7.4.2 Furto de cliques
- 7.4.3 Negação de serviço
- 7.5 Resumo
- Capítulo 8 ■ Desenvolvimento de um SDK remoto em JavaScript
- 8.1 Implementação de um SDK básico
- 8.1.1 Inicialização
- 8.1.2 Carregamento assíncrono
- 8.1.3 Exposição de funções públicas
- 8.1.4 Ouvintes de eventos
- 8.2 Versionamento
- 8.2.1 Versionamento de URL
- 8.2.2 Inicialização versionada
- 8.3 Empacotamento das APIs de web services
- 8.3.1 Acesso a APIs de web services no cliente
- 8.3.2 Empacotamento da API da Camera Stork
- 8.3.3 Identificação de provedores de conteúdo
- 8.3.4 Autorização de usuário e OAuth
- 8.4 Resumo
- 8.1 Implementação de um SDK básico
- Capítulo 9 ■ Desempenho
- 9.1 Otimização da carga
- 9.1.1 Combinação e minificação do código-fonte
- 9.1.2 Redução de solicitações de imagens
- 9.1.3 Colocação de arquivos em cache
- 9.1.4 Adiamento de solicitações HTTP
- 9.2 Otimização do JavaScript
- 9.2.1 Dentro do navegador: encadeamento de UI, repaint e reflow
- 9.2.2 Controle de chamadas dispendiosas: throttle e debounce
- 9.2.3 Adiamento do cálculo com setTimeout
- 9.3 Desempenho percebido
- 9.3.1 Ações otimistas do usuário
- 9.3.2 Apresentação antes de o documento estar pronto
- 9.4 Resumo
- 9.1 Otimização da carga
- Capítulo 10 ■ Depuração e testes
- 10.1 Depuração
- 10.1.1 Como servir código de desenvolvimento em produção
- 10.1.2 Como percorrer o código
- 10.2 Testes
- 10.2.1 Testes de unidade, integração e regressão
- 10.2.2 Criação de testes de regressão com QUnit
- 10.2.3 Criação de testes de regressão com Hiro
- 10.3 Resumo
- 10.1 Depuração
Sobre os autores
Ben Vinegar é engenheiro da Disqus, uma plataforma de comentários em JavaScript remoto. … Ver perfil completo ▶
Anton Kovalyov é engenheiro de software na Mozilla. … Ver perfil completo ▶
Livros relacionados
Recursos
Opinião dos leitores
Angel A G M
Bom livro. Faltam itens recentes, mas ainda vale a pena.
Gabriel K
Excelente livro! Sem palavras para descrever.
Raphael A F C
Uma obra indicada para os programadores que queiram tirar o máximo proveito do JavaScript para implementação e entrega de serviços remoto.
Silvio D
O livro mostra os aspectos sobre a programação de Javascript Remoto. Tem algumas dicas interessantes e códigos práticos. Contudo, a decisão final de qual alternativa aplicar fica a cargo do programador. O autor mostra os prós e contras de cada uma das abordagens.




