Ao depurar aplicativos jQuery que usam AJAX, geralmente tenho a necessidade de ver o json que está sendo retornado pelo serviço ao navegador. Então, vou largar a URL dos dados JSON na barra de endereço.
Isso é bom com o ASPNET, porque, no caso de um erro de codificação, posso ver o diagostic do ASPNET no navegador:
Mas quando o código do lado do servidor funciona corretamente e retorna JSON, o IE solicita que eu faça o download, para que não consiga ver a resposta.
Posso fazer o IE NÃO fazer isso, em outras palavras, apenas exibi-lo como se fosse texto simples?
Eu sei que eu poderia fazer isso se eu definir o cabeçalho Content-Type como text/plain
.
Mas esse é especificamente o contexto de um aplicativo ASPNET MVC, que define a resposta automaticamente quando eu uso o JsonResult em um dos meus métodos de ação. Também quero manter o tipo de conteúdo apropriado, e não alterá-lo apenas para apoiar os esforços de depuração.
Respostas:
Eu encontrei a resposta.
Você pode configurar o IE8 para exibir application / json na janela do navegador, atualizando o registro. Não há necessidade de uma ferramenta externa. Não testei isso amplamente, mas funciona com o IE8 no Vista.
Para usar isso, lembre-se de que todas as advertências usuais sobre a atualização do registro se aplicam. Pare o IE. Em seguida, recorte e cole o seguinte em um arquivo, com o nome de
json-ie.reg
.Em seguida, clique duas vezes no arquivo .reg. Reinicie o IE. O novo comportamento que você obtém ao marcar uma URL que retorna um documento com
Content-Type: application/json
ouContent-Type: text/json
é assim:O que faz, por que funciona:
O
25336920-03F9-11cf-8FD0-00AA00686F13
é o CLSID da ação "Procurar no local". Basicamente, esta entrada do registro informa ao IE que, para documentos que possuem um tipo mime de application / json, apenas visualize-o no local. Isso não afetará nenhum documento application / json baixado via<script>
tags ou via XHR e assim por diante.As chaves CLSID e Codificação obter os mesmos valores usados para
image/gif
,image/jpeg
etext/html
.Esta dica veio deste site e do artigo da Microsoft Manipulando tipos MIME no Internet Explorer .
No FF, você também não precisa de um complemento externo. Você pode apenas usar o
view-source:
pseudo-protocolo. Digite um URL como este na barra de endereço:Esse pseudo-protocolo costumava ser suportado no IE, até o WinXP-sp2, quando a Microsoft o desativava por motivos de segurança.
fonte
reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /t REG_SZ /d "{25336920-03F9-11cf-8FD0-00AA00686F13}"; reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /v Encoding /t REG_DWORD /d 0x08000000
text/json
chave.Eu tive um problema parecido. Eu estava usando o jQuery "$. GetJSON" e tudo funcionou perfeitamente no Firefox e Chrome.
Mas não funcionou no IE. Então, tentei acessar diretamente a URL do json, mas no IE perguntou se eu queria baixar o arquivo.
Depois de muita pesquisa, vi que deve haver um cabeçalho no resultado com um tipo de conteúdo, no meu caso, o tipo de conteúdo era:
Mas quando a página que fez a solicitação recebe esse json, no IE, você deve ser especificado MESMO CONTEÚDO-TIPO, no meu caso era:
abraços
fonte
text/plain; charset=UTF-8
. Não há necessidade de texto / html.Faltava a solução acima, e o código abaixo deveria funcionar em todas as situações:
Apenas salve o arquivo json.reg e execute para modificar seu registro.
fonte
Se você concorda apenas em ter o IE aberto o JSON em um bloco de notas, você pode alterar o programa padrão do sistema para arquivos .json para o Bloco de Notas.
Para fazer isso, crie ou localize um arquivo .json, clique com o botão direito do mouse e selecione "Abrir com" ou "Escolha o programa padrão".
Isso pode ser útil se você por acaso desejar usar o Internet Explorer, mas sua empresa de TI não permitirá que você edite seu registro. Caso contrário, eu recomendo as respostas acima.
fonte
Eu uso o Fiddler com o plugin JSONViewer para inspecionar o JSON. Eu não acho que seja possível fazer o IE se comportar sem mexer no registro, talvez. Aqui estão algumas informações.
fonte
Alterar as configurações do tipo mime JSON do IE afetará a maneira como o IE trata todas as respostas JSON.
Alterar o cabeçalho do tipo MIME para text / html informará efetivamente a qualquer navegador que a resposta JSON que você está retornando não é JSON, mas texto simples.
Nenhuma das opções é preferível.
Em vez disso, convém usar um plug-in ou ferramenta como o Fiddler mencionado acima ou qualquer outro proxy do inspetor de tráfego de rede, onde você pode escolher sempre como processar a resposta JSON.
fonte
text/html
não informa ao navegador que a resposta é texto sem formatação, mas HTML. Se você decidir que deseja texto simples, usetext/plain
. Caso contrário, você pode acabar com algumas vulnerabilidades XSS interessantes.O FireFox + FireBug é muito bom para esse fim. Para o IE, há uma barra de ferramentas do desenvolvedor que eu nunca usei e pretendo usar, portanto não posso fornecer muito feedback.
fonte
Eu apenas tive o mesmo problema com um XMLHttpRequest. O site funciona perfeitamente no Chrome e no FF e em dezenas e dezenas de navegadores Internet Explorer em produção. Essa máquina ONE (a que nossa empresa está configurando para ser uma máquina de demonstração, é claro) decidiu que solicitaria salvar a resposta json a uma solicitação de ajax.
A solução de regedit aceita abaixo a corrigiu. Obrigado.
fonte
Você pode ver a resposta no Fiddler: http://www.fiddler2.com/fiddler2/
Essa é uma boa ferramenta para essas coisas!
fonte