1
resposta

Os cabeçalhos Accept/Conten-Type

Os cabeçalhos Accept/Conten-Type não ficaram muito claros para mim,eles são os MIME_Types? se eu pego uma pagina HTML simples, e altero o cabeçalho para JSON ( por exemplo) isso ira dar um erro de parse, por o html esta em um formato diferente do especificado?

Se eu monto uma pagina em PHP na formatação JSON (por exemplo) é necessário especificar esse content type no header da pagina?

O que acontece se não for setado esse mime type (mesmo com o conteúdo no formato correto) ?

1 resposta

Olá. Muitas dúvidas :-)

Tentarei responder uma por vez.

Os cabeçalhos Accept/Conten-Type não ficaram muito claros para mim,eles são os MIME_Types?

Na verdade o que o Accept e o Content-type recebe como valor é um MIME Type. Você consegue ver quais são os MIME Types disponíveis em uma requisição HTTP no link da MDN: https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Basico_sobre_HTTP/MIME_types

Se eu pego uma pagina HTML simples, e altero o cabeçalho para JSON ( por exemplo) isso ira dar um erro de parse, por o html esta em um formato diferente do especificado?

Pra responder essa, precisamos saber a diferença entre o Aceept e o Content-type.

Se enviarmos um Accept com o valor de application/json estamos falando para o servidor que queremos uma resposta que seja JSON, sendo asssim o nosso servidor nos enviará um Content-type com o valor de application/json e seu corpo da resposta teremos um JSON. Então, utilizamos o Accept para solicitar um tipo de arquivo para o servidor web, e o servidor web informa pra gente qual é o tipo de arquivo que ele respondeu pelo Content-type.

Show! Agora respondendo sua pergunta. Se você alterar o Content-type para application/json mas a resposta que você está enviando é um HTML, isso não dará erro nos navegadores modernos mas ele tentará interpretar o HTML como JSON. Faz sentido?

Se eu monto uma pagina em PHP na formatação JSON (por exemplo) é necessário especificar esse content type no header da pagina?

Sim. Isso é bem importante se você estiver implementando uma API RESTful.

Se ficar qualquer dúvida é só falar :-)