Loading

Module 1: Introdução ao HTML CSS e ao Application Logs

Nota de Estudos
Study Reminders
Support
Text Version

Método HTTP & Códigos de Retorno

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Nesta semana, vamos além da nossa compreensão básica de HTTP que olhamos no último momento do. Vamos estudar nossos aplicativos usando as ferramentas webdev do navegador, e também indopara examinar o que ele parecia, como em detalhes, no lado do servidor. Assim como as ferramentas de desenvolvimento do navegadornos permitem entender como o navegador visua os pedidos e o que ele está fazendo com a solicitação atual. Ao lado do servidor, precisamos de ferramentas para entender como é que o servidorexperimenta nossos pedidos.Nossa ferramenta primária para isso é logs e nossa configuração do servidor terá muitos recursos que vão em direção atanto entendendo o comportamento do lado do servidor, como também sendo capaz de implantar vários serviços noo servidor de uma vez. Como fizemos na última vez, continuaremos a usar o pacote e o uso do XAMPP
apache e Tomcat e todas as ferramentas que ele fornece. Como notei da última vez, se você quiser podeinstalar xampp em um bastão USB.Então, que você pode carregar o projeto em volta, conforme a necessidade, o que é muito conveniente. As outras ferramentasque utilizaremos desta vez são Curl, Shell Scripting e Java. Para a shell, também utilizaremos alguns utilitários do Unixcomo awk, etc. para poder escrever pequenos scripts que nos mostram o que está acontecendo noo lado do servidor quando nossos pedidos são feitos. Usaremos nosso programa de linha de comando Javaenvolto como um script CGI como vimos na última vez, deliberadamente nosso usuário Java neste exemplo é bemmínimo.
É uma programação processual direta sem nenhum objeto orientado ou qualquer outro tipo de estruturação.Ok, agora vamos em frente.(Consulte o Slide Time: 02:16)
Nessa sessão, vamos nos aprofundar nos detalhes de como é que a programação do servidor édiferente da programação web ordinária, em especial, os detalhes de como os browsers e servidoresinteragem. Na última vez, começamos com exemplos básicos de interação no método HTTP GET, edesta vez, vamos estudar nossos aplicativos, que utilizam tanto o método GET quanto o método post.
E veremos ambos aqueles com as ferramentas de dev web do navegador e dar uma olhada no que essas ferramentastêm a nos dizer sobre o nosso uso das instalações do protocolo HTTP do navegador e do servidor. Como os navegadores dependem de HTML, e eles renderizam esse HTML em uma visualização para os usuários,.Também iremos estudar alguns dos aspectos de como HTML pode ser visto no lado do navegador, na formade um modelo chamado de modelo de objeto de documento, que é um conjunto de objetos dentro do navegador quesão usados para montar uma árvore de elementos de documentos, que é o que realmente experimentamos como usuários.
Uma coisa interessante sobre a divisão do programa em duas peças; o navegador e o servidor,é que a conexão entre eles tende a ser bastante fina. O navegador tem que converter nossa interaçãoem apenas dados suficientes para que o servidor seja capaz de computar com e retornar os resultadosque nós nos preocupamos. A diferença primária do lado do servidor está lá ao contrário de um programa de desktopque é iniciado e parado, não existe isso de parar um programa do lado do servidor.Se um usuário não estiver usando ele outro é, isso significa que o programa está perpetuamente em uso. E assimfazer mudanças nos programas tem que ser feito de tal forma que as pessoas não experimentem nenhum tipo detipo de disrupção, ou pelo menos que a disrupção que eles experimentam é absolutamente mínima.Portanto, implantar programas a servidores de tal forma que as pessoas possam usá-los é uma arte em seusdiretos próprios.E veremos os primórdias desta como analisamos como as peças de um programa são montadas eimplantadas em servidores. Nós também começaremos a entender como a existência de URLs é tanto uma ajudaquanto um impedimento para a criação de programas do lado do servidor.(Consulte o Tempo de Slide: 04:59)
Deixe-nos examinar todos os elementos do sistema que vamos estudar desta vez. Primeiro, temoscomo tivemos a última vez mas ao contrário da última vez em que o navegador foi simplesmente algo que enviasolicitações HTML, solicitações HTTP e respostas HTML esperadas. Desta vez vamos apassar algum tempo no DOM, que é a estrutura interna que o navegador tem. Em seguida, quandoo navegador enviar uma solicitação HTTP para o servidor, vamos ver como ele lida com o conteúdode um formulário.
Temos visto um exemplo de conteúdo do formulário quando olhamos em caixas de busca na última vez, mas este tempo, vamos olhar para ele quando estamos enviando alguns dados, o que é suposto alteraro que está lá no servidor. Em seguida, para a resposta HTTP, teremos HTML e CSS e nóstiraremos algum tempo para ver como é essa estrutura. No lado do servidor, vamos aolhar para a implantação de programas.E mais especificamente, vamos analisar a natureza dos arquivos de log, tanto para os servidores porpróprios, e arquivos de log que são especializados para o nosso aplicativo.(Consulte o Tempo do slide: 06:21)
Vamos começar com uma revisão das coisas que discutimos na última vez. O que temos aqui é a estrutura básica dede um app web e os protocolos de texto e codificações.(Consulte o Tempo de Slide: 06:33)
A partir da última vez, há o usuário cujos eventos vão para um loop de eventos que está em execução dentro do navegador. O navegador apresenta a UI para o usuário. Ele é escrito em HTML e tais coisas como preencherem texto e botões são os meios primários de interação do usuário. Em seguida, o navegador converte o usuáriorequisita em pedidos de protocolo HTTP e acabará obtendo uma resposta de volta do servidor.Enquanto isso, o servidor obtém os dados do navegador dá-lo ao CGI ou ao programa linha de comandosna forma de variáveis de ambiente e entrada padrão e saída; padrão de saída; s padrão
fora. E, finalmente, pode ou não utilizar um banco de dados ou uma loja de arquivos. Geralmente, é claro, porque nósqueremos ter dados de longa duração, os programas no lado do servidor inevitavelmente estarão armazenandoalgo. Então, a próxima vez em que o usuário voltar seus dados pode ser recuperado e dado ao usuário.
Tudo isso nós estamos muito familiarizadas e esse é o ciclo que temos que ter em mente enquanto começamosanalisando as peças desse ciclo. Ok.(Consulte O Tempo De Deslizamento: 07:50)
Próxima coisa que entendemos da última vez foi; conteúdos de formulário são mapeados em strings de consulta. Mas isso éo que acontece para o que é chamado de método GET. E o que isso exatamente significa é o que nós somosque vamos discutir desta vez. Como vimos da última vez, temos uma string de consulta. E também você pode pensardisso como uma espécie de, você sabe sintaxe diferente para uma barra de função. Mas a nova ideia desta vez éque existem métodos diferentes do que apenas o método GET que normalmente vimos na última vez. Ok.(Consulte O Tempo De Deslizamento: 08:25)
Finalmente, da última vez, tivemos essa outra ideia, que é a noção de que existem tais coisas como cabeçalhos, que ajudam a organizar os dados do protocolo, esses cabeçalhos em 1 e 2, em particular relacionam-se como serviço que está sendo prestado. Enquanto o resto do cabeçalho é sobre o agente do usuário e quais tiposde dados o agente de usuário aceita, etc. relaciona-se com a capacidade do cliente. A nova ideia aqui é a dechamar essa parte em particular como o que é chamado de método HTTP. ok.(Consulte o Slide Time: 08:59)
A próxima coisa que estudamos na última vez foram cabeçalhos de resposta HTTP, que contêm a respostaseguida de qualquer que seja o dado que o servidor deseja enviar. Aqui, a nova coisa que habitaremos adesta vez é a existência de códigos de erro e suas interpretações. Já vimos alguns delesbrevemente, mas desta vez veremos mais alguns. E uma vez que os cabeçalhos são feitos, os dados começam.
Esses cabeçalhos são algo que você vai se tornar muito familiarizante uma vez que você se tornar um programador web.(Consulte o Tempo de Slide: 09:37)
Essa é a revisão para o que temos até agora. Agora vamos começar a olhar para os detalhes para esta sessão.(Video Starts: 09:45)
Vamos começar nosso estudo dos métodos HTTP e códigos de retorno olhando para o nosso app de linha de comando. Como vimos na primeira linha de cabeçalho HTTP, um método é mencionado, se o nome do método forGET, então um pedido é feito. E a expectativa com GET é que quando solicitamos o recurso
abcpqr, se usarmos o método obtemos então não vamos alterar o estado de qualquer recursoestá lá.
No entanto, se o método POST for usado, então qualquer recurso que tenhamos solicitado, podemos alterarseu estado. Na verdade, o método POST está aí, a fim de pedir que o recurso seja alterado. Além de GETe POST há outros métodos como HEAD, TRACE, PUT, PATCH, etc. HEAD e PUTocasionalmente usados, mas o resto dos métodos deve realmente ser bloqueado. Embora, eles tenhamsido projetados por conveniência dado que a internet se transformou em lugar difícil para se manter segurovocê não quer acabar de expor quaisquer facilidades para o mundo exterior que alguém possa usar.Porque você inadvertidamente não sabia que eles existiam. Isso mantendo instalações mínimas para o mundo de fora do mundo é chamado de redução da superfície de ataque, o que é uma ideia que olharemos paramais tarde quando entendemos o que é preciso para garantir nossos sistemas. Agora, deixe ’ s começar olhando parademos para vários elementos de nossa aplicação. Comecemos por abrir nossas ferramentas do navegador web.Aqui vamos nós. E o que nós vamos fazer é começar por turno recarregando esse local, para que nósveja a forma natural em que o aplicativo vem até nós.
E aqui podemos ver o que os pedidos parecem em branco. Antes de mais nada, temos o método GET. O statusé 200. Então, a gente sabe tudo ok, o domínio, é claro é localhost. E esta é a URLque estamos olhando é o documento HTML de índice e a transferência e tamanho e assim por diante. Comoolhamos para a última vez, ícone de favoritos é uma solicitação padrão feita para as primeiras páginas de tempo visitadas.Nada inesperado aqui, temos a URL. Nós temos esses vários cabeçalhos. E você pode pegar um looklike a dito, qualquer aplicativo lá você acontece para usar para descobrir o que ele realmente está fazendo.Até agora tão bom, nada inesperado. Agora vamos ver o que acontece, quando tentamos pela primeira vez entrar emesta caixa. Lá ’ s algo interessante o cursor está, na verdade, piscando em uma aba. Então, de alguma forma uma abaparece ter ficado inserida.Este tipo de coisa, não importa muito para aplicações simples. Mas designers cuidadosos levam umolhar para o detalhe fit e finalizar como era da aplicação. Por isso, em algum lugar, precisamos levaralguma ação para remover esse caractere de guia extra. Isso é mostrado na figura dada abaixo.
Mas por enquanto, vamos apenas remover a guia. Ahah! À medida que removemos a guia, vemos que na verdade háuma frase aqui dizendo ‘ Digite sua sequência de comandos aqui ’, que é uma espécie de um texto de ajuda quenós não ouvimos.
Podemos tratar o problema com o caractere guia posteriormente. Por enquanto, deixe-nos inserir os seguintes comandos:
• registrado f 1, f 2 e• temos, let ’ s say, despesa f 2200 e let ’ s ask for report on f 1 nome e depois
• Temos fim, como diz o “ Digite sua sequência de comandos finalizada por ‘ end ’ ”, submetemosa forma e obtemos o resultado. Isso está nos dizendo que estes são os colegas de registro.Estes são os gastos. Isto é o que f1 post. E os detalhes do banco de dados também são impressos para fora. No lado da ferramenta desenvolvedor, temos o método POST. E temos a URL que foi chamada que éFairShare2.sh em vez de FairShare2.html. Mas há algo um pouco estranho no sentido de que,embora, o nome dos documentos seja ‘ sh ’, o tipo é HTML. Então, essa é uma daquelas interessantescoisas sobre a web. No início, vimos que um arquivo que termina com o dot HTML também é detipo HTML.
Mas nada no sistema realmente procura qualquer conexão entre os nomes do arquivo eo tipo do arquivo. O tipo do arquivo é dado puramente por uma espécie de cabeçalho de resposta comoContent-Type: text/html. Então, assim como o cabeçalho de resposta aqui diz o text/HTML, que éna verdade o tipo de arquivo. Não tem nada a ver, de qualquer forma, com qualquer tipo de extensão ou qualquer coisasemelhante. Fizemos uma chamada POST e nosso pedido foi assim.Em tudo isso, se você dá uma olhada no arquivo de documentos fairShare2.sh, que é dado no lado direitoda tela no app, ele diz que o comprimento do conteúdo é 73, o que significa aquelas sequencias de comandosque digitamos foram 73 bytes. Ele diz que tipo de conteúdo é application / x www form urlencodificado, o quesignifica que os dados foram de alguma forma codificados quando foi enviado para o servidor. Mas, onde estão os dados?Esses dados normalmente não são mostrados. E há uma espécie de etapa indireta que você tem que tomar, para olharnos dados.
Se você pressionar este botão ‘ Edit ’ e ‘ Resend ’ aqui, você descobrirá que agora as ferramentas permitem que vocêrealmente faça uma solicitação POST. E se você precisar, você pode editar esses dados. É claro que, comparadoscom nossos dados originais, vamos dar uma olhada nos dados originais repassando os dados originais. Entãoé assim que os comandos que digitamos pareciam.Mas não é isso que eles parecem estar no inspetor. Então, nos submetemos tudo de novo. E deixe o ’ sver desta vez o que acontece quando vamos para ‘ Edit ’ e ‘ Resend ’. Ok. Agora, compare isso comsua memória de, infelizmente, os pedidos que tínhamos feito anteriormente porque se formos voltar entãoo sistema mudará novamente. Então, registramos f 1 e f 2 e depois disso, assim primeiro de todos os espaçosforam alterados para mais e a linha de retorno da carruagem alimentação a sequência barra r barra n temfoi codificada como 0 D 0A, que é uma codificação hexadecimal desses caracteres especiais.E então seguimos o mesmo padrão para o resto. Então, isto é o que significa ter tipo de conteúdo xwww form urlencodificado, este tipo de codificação é chamada de codificação URL. Esta parte que écomandos iguais a vem do nome da forma, como veremos em breve. Em seguida, testando émuito útil para ser capaz de re-editar e enviar um determinado pedido tudo de novo. E porque se háum pequeno erro de digitação em algum lugar você não tem que recriar tudo o que você pode apenas fazer uma espécie demudança local.
O que acontece se realmente fomos editar e repor, é algo que vamos dar uma olhada mais tarde.Por enquanto, nós vamos apenas ir em frente para o próximo passo. Resolvamos resolver o pequeno quebra-cabeça da abaou espaço extra que obtemos quando vemos pela primeira vez o app FairShare. Por isso, aqui há uma aba extra.Normalmente, HTML não deve ser sensível ao espaço. Por exemplo, se nós permutamos oslugares de p e div e colocamos adiciona algum espaço extra, em algum lugar.Eu o guardo e recarregá-lo e depois fazer a nossa coisa de sempre, que é registrar alguém e apenas testá-lo,descobrir o que acontece. E deixe o ’ s tentar e recarregar essa coisa para voltar para o estado que queremos.Então, de onde vem essa guia? Infelizmente, acontece que se você olhar para isso cuidadosamente,você verá que há uma guia extra onde a área de texto termina; que é logo antes</TEXTAREA>
Então, é um tanto irritante que HTML seja subitamente sensível a esses tipos de coisas em alguns poucoslugares ímpares e, caso contrário, ele não está em nenhum outro lugar. Mas essa é uma daquelas coisas que simplesmentetemos que conviver com e espaços extras, principalmente em templates, e assim por diante, é um desses pequenosniggling detalhes que às vezes podem ter consequências surpreendentes. Então, vamos tentar remover esse espaçodaqui completamente.E depois voltar e ver o que acontece, vamos recarregar nosso programa e agora, nossa sentença de ajuda,que colocamos aqui como um placeholder é realmente visível a primeira vez que você carrega. Então, você tem queser bastante sensível a esses tipos de coisas, especialmente quando se trata do navegador. Não hámuitos desses, mas estou lhe dando exemplos bem simples para sensibilizá-los a ter cuidado emolhando em detalhes o que você vê quando está fazendo programação web.O próximo exemplo que teremos disso, infelizmente, é mais severo. Para ver este exemplo,deixe-nos fazer o seguinte: Aqui neste formulário, temos tags ID. Como o formulário é organizado é como estehá uma tag de formulário, que termina com </FORM>. E dentro da tag de formulário, há uma etiqueta ehá uma área de texto com um marcador de sequência de comandos, algumas colunas, algumas linhas e assim por diante deetc. E você tem dois botões: você tem um botão, envie e reajuste e cujo status ouapresentem formulário e forma clara.
E este Id, FairShareInput, é útil no lado do servidor para descobrir qual botão foi pressionado.E deixe-me apenas certificar-se de entender o nesting do formulário, a etiqueta, a área de texto ea entrada no display real. Então, no display, o que temos aqui é: ‘ Digite sua sequência de comandofinalizado por ‘ end ’ ’.A parte label está logo acima da área de texto. E a área de texto fica por aqui e depois os botõesde entrada, logo abaixo da área de texto. Vejamos o que eles parecem primeiro nas ferramentas do navegador. Por isso,desta vez vamos ao inspetor e o inspetor te mostra os elementos na tela porembasando tudo o mais em interface do app. Quando você passa a pairar, ele limpa a parte que você éinspecionando e todo o resto ainda permanece embasado.
E se você assistir nesta área, quando eu pairar sobre o corpo, observamos que as seções como<body>, <div> ou o aplicativo primário denominado como < div class = ” main ” >, a parte coberta poro código na seção correspondente é destacado na tela. Este é o cabeçalho, que ele édestacando. Haverá uma tag de boas-vindas. Aqui, encontramos seções diferentes para parágrafos e forma. Então, deixe-nos dar uma olhada. Esta é a versão web do aplicativo fairShare.
Então temos esse separador ‘</p>’ que não está fazendo nada de muito, é o separador éindicado por aquelas linhas pontilhadas. Em seguida, tem o formulário, e o rótulo do formulário. Em seguida, vocêtem a área de texto sozinho. E temos um pequeno separador. Temos um botão.Ele está destacando todos esses elementos do outro lado. E nós também temos o outro botão. Por fim,o formulário termina neste ponto, e há um pouco de espaço antes que o formulário termine.Normalmente, hoje em dia você não tem que criar esses tipos de coisas. Você pode cuidar dele de uma formamais sofisticada. Mas para aplicativos simples, como este, o que fizer o trabalho geralmente ébom o suficiente. Ok, agora vamos dar uma olhada no problema que, às vezes, pode ser criado porcoisas como esta. E, para isso, vamos voltar para a nossa aba de rede. Vamos fazer uma mudança e vero que acontece sabemos que este formulário funciona perfeitamente bem.Mas vamos fazer isso. Algo como o formulário possui muitas tags diferentes nele: um destes acontece comser chamado de nome. Então, em vez de ID, vamos mudar essa coisa para nomear e escrever essa coisa. Voltar.Agora, eu vou recarregar e vou colocar os comandos que queremos f1,f2, f1 f3, qualquer que seja, despesaf1 200. E deixe o ’ s enviar o formulário. O que aconteceu? Submetemos o formulário mas não há nenhum resultadoem todos. Como veremos por este exemplo mais tarde, se você for e olhar para ele no lado do servidor, você podedescobrir o que deu errado.Mas isso é algo interessante que você pode descobrir do lado do cliente, também. Se olarmos o queaconteceu aqui, acontece que os cabeçalhos de solicitação nos dizem que o comprimento do conteúdo é zero, o quesignifica basicamente que todo o texto que digitamos nunca foi enviado pelo navegador. Bem, acontece queque existem muitas regras diferentes mais heurísticas que os browsers usam para decidir o que fazer quandoalgo inesperado acontece.
Então, aqui, o navegador diz que este é o nome do formulário. Mas, então, como saber que ela éassociada a esta área de texto? Essa é a questão que tem de resolver. Ele pode usar heurísticas, já que, a área de textoestá dentro. Mas também tem regras, que exigem que essa coisa deva ser Id. E se colocarmos oId de volta, e recarregar. Temos algo simples f1 fim, enviar, obtemos algum resultado. E, docurso, o comprimento do conteúdo é nonzero.Mas vamos tentar o mesmo exemplo com uma ligeira alteração. Mudaremos isso de volta para o nome eem vez disso, removamos este guia de formulário por aqui. Volte para o nosso sistema. Recarregue, que mesmo agora eleainda funciona. O que acabou de acontecer? Bem, a resposta acaba por ser que se o indicador de áreas de texto estiverausente, porque a área de texto é aninhada, ela é considerada uma parte desta forma. Por que há regras estranhascomo esta? Parte disso é que quando a web começou, as pessoas começaram a fazer regras rígidas o modonós normalmente fazemos isso em uma linguagem de programação.Mas porque HTML foi escrito por pessoas, sem nenhum treinamento programador, o que aconteceufoi que se o navegador tentar ser muito rigoroso, começou irritando as pessoas e alguns fornecedores do navegadorsurgiram com a ideia de que você deveria tentar ser permissivo. É claro que uma vez que as pessoas tentam serpermissivas, começam a colocar heurísticas em vez de regras rígidas. E, ao longo dos anos, aquelesheurísticas são baleados em todos os tipos de coisas estranhas.
Então, por exemplo, quando eu me deparei com isso quando eu estava construindo esse programa, na verdade eu tinhasem ideia do que exatamente estava dando errado porque ninguém consegue manter detalhes sintáticos, como este, apenasno topo de sua mente. Então, eu fiz o que todo mundo faria. Tente fazer uma consulta agradável atéalguém, em algum lugar encontrou isso antes e venha com uma solução e consigaalgo indo. Alternativamente, tente encontrar o documento original que enuncie o que as regrasdevem ser.E ambos os métodos digamos, de se aproximar desses tipos de problemas é o que as pessoaseventualmente têm que recorrer. Aqui, por exemplo, são as páginas que encontrei um auxílio de página ‘ Área de textovalor não ficando postado com formulário ’ e eu realmente não notei, por exemplo: esta pessoa tem o nome dee ID. E então em mais instruções ele parece ter alguma coisa, forma, etc., etc. Masentão sua área de texto estava fora do formulário.
E aí eu só comecei a olhar o que são algumas coisas que parecem que funcionariam. Então, ele temalgo a ver com área de texto dentro do formulário talvez, ou algo sobre o atributo ID do formulário.E outra pessoa finalmente disse algo que funcionava; que está usando o atributo form etc. Então, euimaginei que tinha algo a ver com atributos e IDs de forma e etc. E então, finalmente, um lookpara o que é a especificação real.E pareceu mostrar como deve ser o formato de formulário de área de texto. E eu originalmente tinha nome emlá, mas aí eu disse, ok, deixe a gente tentar ID e ver o que acontece. E então foi isso que funcionou. Decurso, antes de descobrir que fora, tive que passar por outras coisas, por exemplo, área de Texto ‘ Nãopostada pelo problema do navegador ’. E houve alguma discussão. Lá. Mas, essa pessoa tinha umdesfalque claro de ortografias que poderiam levar a um erro.Mas, pelo menos é um indicador de que esses são os tipos de coisas que possivelmente estão erradas. Agora, deixea gente ver se podemos ir consertar isso. Então nós então temos o nosso sistema e vamos enviar o formulário ever que tudo está bem. Ok: O ponto deste exemplo é que, às vezes, há muitocoisas sutis, mas a indicação de falha ou pelo menos o razoavelmente claro, porque você poderealmente verificar o que é que você está enviando do navegador.
Então, as ferramentas do navegador, em geral, ajudarão a tirá-lo de muitos tipos de situações irritadoramente complicadas,mas exige que você preste atenção em muitos detalhes e como de costume, faça uma pesquisa inteligente ema web para descobrir o que exatamente está acontecendo. Algumas pessoas se acham fascinadas pelostipos de detalhes que estamos falando. E então se você quiser encontrar a resposta definitiva paramuitos desses tipos de perguntas, um grande número de explicações resume-se a conhecer a especificação oficialcomo dado por W3C.Então, ao procurar por especificação de formulário W3C, você encontra coisas como ‘ world wide webconsórcio ’, ‘ Forms em documentos HTML ’. E se você procura formulários em documentos HTML,entre dizer por exemplo, há uma área de texto e seus atributos. E diz coisas isso, ‘ o elemento de áreado texto cria um controle de entrada de texto multi line. O agente do usuário deve utilizar o conteúdo deste elementocomo valor inicial e gravar renderizar este texto inicialmente ’.É por isso; as guias e espaços entre o início e o final da tag são considerados o valor iniciale são renderizado fielmente pelo navegador. Por isso, em certo sentido, o navegador não está erradoe nem o W3C. Como o navegador e o W3C argumentam sobre se um espaço eo texto deve ser tratado de forma diferente e esses tipos de coisas, você na verdade não quer fazer.Porque, o que parece espaço em um contexto, por exemplo, se o plano de fundo da área de textoacontecer de ser uma coisa colorida, então o espaço poderia ser visível, embora em um fundo branco ele sejanão. Então, não é que as regras sejam estranhas, é que a ideia do que parece bom para as pessoas écomplicado o suficiente que especificá-lo em grande detalhe é muito difícil. Então, essa é outra razãopor que regras como essa existem.Se você olhar para a questão do Id e do nome do formulário, então você pode encontrar esses tipos de coisasque tentam se soletrar, o que significa um formulário para ter outros elementos associados a ele.Infelizmente, a não ser que você seja um especialista e responsável por realmente construir navegadores web, é improvável que você achasse fácil ler esses tipos de especificações, dado que não somosrealmente acostumados com eles, motivo pelo qual a sabedoria coletiva do mecanismo de busca e sites como pilhasobre o fluxo acaba sendo a coisa usual de fazer.
Para entender o que acontece no lado do servidor, em vez de usar este arquivo FairShare 2, que vaipara o fairShare 2 CGI que nós escrevemos, em vez disso, vamos olhar para uma forma simplificada desta coisa. Então, usaremos um arquivo chamado fairShare-post. E aqui, em vez de enviá-lo ao nosso comando usual, vamos enviá-lo para um comando especial para postagem de dados, que simplesmente vê o que o servidorvê e imprime para nós.E então, estamos em uma forma muito melhor para brincar com ele e entender por que realmente está acontecendo.Então, vejamos primeiro o que acontece. Então, aqui temos esse post de fairShare de arquivo. E porque nóscarregamos com recarga de turno, também conseguimos esse ícone de favoritos, que o xampp realmente arranjou para mostrarum ícone. Por isso, por exemplo, há o ícone de um favorito que é retornado automaticamente. Tudo bem. Agora,vamos ver o que acontece se escrevermos alguma coisa e nos submetemos a isso uma forma. Ok.Então, aqui, em vez do nosso aplicativo usual, o que obtemos é um arquivo que foi projetado para imprimir apenas aspartes mais interessantes de todo o ambiente que é enviado para o sistema. Se você quiser vero ambiente completo a propósito, há um programa chamado show env CGI, que faz omesmo que nós somos como fizemos, exceto que ele imprime um relatório muito mais detalhado e um tantomais bonito que você tem antes.Mas, vamos voltar para o nosso sistema aqui. Então, o que temos é:• Primeiro de toda a solicitação URI algo sobre o endereço remoto.• Qual o script que está executando será dado lá; é post data.sh.• Você também verá xampp htdocs, usuário remoto, sem string de consulta, sem host remoto, scriptnome: é HTTPS.• O que é o nosso software de servidor; Este é localhost etc., etc. Comprimento do conteúdo 20.• Solicitar post e ‘ dados dos post como o navegador envia ’, E,• Post dados após ele ser analisado em comandos originais.Então, deixe-nos ver, antes de tudo como isso é feito. Então, temos post data.sh; o que ele faz é: ele tem esse cabeçalhoque é necessário por HTTP. Neste caso, adicionamos bin do usuário no caminho, porque se vocêacontecer de estar em cygwin. Mas, diferente disso em diferentes sistemas operacionais, isso pode ou não
ser necessário. Ele verifica se o método de solicitação é post, ele verifica se há um conteúdo e se existe,então ele lê o conteúdo nessa variável chamada de post data.
Agora, ele faz algo interessante. Este é um roteiro awk. E eu acabei de criar uma matriz devariáveis interessantes que são relevantes para o HTTP. E é só olhar através deles e imprimir o resultado. E agora você posta os dados como o navegador o enxerga, você decodifica-o; quer ver o que vaiacontecer quando esses comandos forem desmaiados, e assim por diante. Então, aqui estamos nós. aqui obtemos um arquivo básico, que nos permitirá entender o que está acontecendo no lado do servidor.Agora, começaremos a dar uma olhada nos arquivos de log e na configuração geral do servidor. Vejamoso que temos em nossa distribuição xampp. Aqui estão um monte de coisas e algumas das quais sãodignas de notas fazer bulltets lá é apache, tem o CGI bin aqui e depois tem htdocs. O serviço padrãovem de htdocs. Por exemplo: se você simplesmente diz localhost, ele vai para htdocs.