Lors du débogage des applications jQuery qui utilisent AJAX, j'ai souvent besoin de voir le fichier json renvoyé par le service au navigateur. Je vais donc déposer l'URL des données JSON dans la barre d'adresse.
C'est bien avec ASPNET car en cas d'erreur de codage, je peux voir le diagostic ASPNET dans le navigateur:
Mais lorsque le code côté serveur fonctionne correctement et renvoie réellement JSON, IE m'invite à le télécharger, donc je ne peux pas voir la réponse.
Puis-je demander à IE de NE PAS faire cela, en d'autres termes, de simplement l'afficher comme s'il s'agissait de texte brut?
Je sais que je pourrais le faire si je définis l'en-tête Content-Type sur text/plain
.
Mais il s'agit spécifiquement du contexte d'une application ASPNET MVC, qui définit la réponse automatiquement lorsque j'utilise JsonResult sur l'une de mes méthodes d'action. De plus, je veux garder le type de contenu approprié et ne pas le changer uniquement pour prendre en charge les efforts de débogage.
Réponses:
J'ai trouvé la réponse.
Vous pouvez configurer IE8 pour afficher application / json dans la fenêtre du navigateur en mettant à jour le registre. Il n'y a pas besoin d'un outil externe. Je n'ai pas testé cela de manière générale, mais cela fonctionne avec IE8 sur Vista.
Pour l'utiliser, n'oubliez pas que toutes les mises en garde habituelles concernant la mise à jour du registre s'appliquent. Arrêtez IE. Ensuite, coupez et collez ce qui suit dans un fichier, du nom de
json-ie.reg
.Puis double-cliquez sur le fichier .reg. Redémarrez IE. Le nouveau comportement que vous obtenez lorsque vous chatouillez une URL qui renvoie un document avec
Content-Type: application/json
ouContent-Type: text/json
ressemble à ceci:Ce que ça fait, pourquoi ça marche:
Le
25336920-03F9-11cf-8FD0-00AA00686F13
est le CLSID de l'action "Parcourir sur place". Fondamentalement, cette entrée de registre indique à IE que pour les documents qui ont un type d'application mime / json, affichez-le simplement en place. Cela n'affectera pas les documents d'application / json téléchargés via des<script>
balises, ou via XHR, et ainsi de suite.Les clés CLSID et encodage obtenir les mêmes valeurs utilisées pour
image/gif
,image/jpeg
ettext/html
.Cet indice provient de ce site et de l'article de Microsoft sur la gestion des types MIME dans Internet Explorer .
Dans FF, vous n'avez pas non plus besoin d'un module complémentaire externe. Vous pouvez simplement utiliser le
view-source:
pseudo-protocole. Entrez une URL comme celle-ci dans la barre d'adresse:Ce pseudo-protocole était auparavant pris en charge dans IE, également, jusqu'à WinXP-sp2, lorsque Microsoft l'a désactivé pour des raisons de sécurité.
la source
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
clé.J'avais un problème similaire. J'utilisais le jQuery "$. GetJSON" et tout fonctionnait parfaitement dans Firefox et Chrome.
Mais cela n'a pas fonctionné dans IE. J'ai donc essayé d'accéder directement à l'URL de json, mais dans IE, il m'a demandé si je voulais télécharger le fichier.
Après de nombreuses recherches, j'ai vu qu'il devait y avoir un en-tête dans le résultat avec un type de contenu, dans mon cas, le type de contenu était:
Mais lorsque la page qui a fait la demande reçoit ce json, dans IE, vous devez être spécifié SAME CONTENT-TYPE, dans mon cas était:
câlins
la source
text/plain; charset=UTF-8
. Pas besoin de texte / html.La solution ci-dessus manquait, et le code ci-dessous devrait fonctionner dans toutes les situations:
Enregistrez-le simplement dans le fichier json.reg et exécutez pour modifier votre registre.
la source
Si vous êtes d'accord avec IE simplement ouvrir le JSON dans un bloc-notes, vous pouvez changer le programme par défaut de votre système pour les fichiers .json en Bloc-notes.
Pour ce faire, créez ou recherchez un fichier .json, cliquez avec le bouton droit de la souris et sélectionnez «Ouvrir avec» ou «Choisir le programme par défaut».
Cela peut s'avérer utile si vous souhaitez par hasard utiliser Internet Explorer mais que votre entreprise informatique ne vous laissera pas modifier votre registre. Sinon, je recommande les réponses ci-dessus.
la source
J'utilise Fiddler avec le plugin JSONViewer pour inspecter JSON. Je ne pense pas qu'il soit possible de faire fonctionner IE sans jouer avec le registre peut-être. Voici quelques informations.
la source
La modification des paramètres de type mime JSON d'IE affectera la façon dont IE traite toutes les réponses JSON.
Changer l'en-tête de type mime en text / html indiquera effectivement à n'importe quel navigateur que la réponse JSON que vous renvoyez n'est pas JSON mais du texte brut.
Aucune des deux options n'est préférable.
Au lieu de cela, vous voudrez utiliser un plugin ou un outil comme le Fiddler mentionné ci-dessus ou tout autre proxy d'inspecteur de trafic réseau où vous pouvez choisir à chaque fois comment traiter la réponse JSON.
la source
text/html
n'indique pas au navigateur que la réponse est en texte brut, mais en HTML. Si vous décidez que vous voulez du texte brut, utiliseztext/plain
. Sinon, vous pouvez vous retrouver avec des vulnérabilités XSS intéressantes.FireFox + FireBug est très bon à cet effet. Pour IE, il existe une barre d'outils développeur que je n'ai jamais utilisée et que j'ai l'intention d'utiliser, je ne peux donc pas fournir beaucoup de commentaires.
la source
J'ai juste eu le même problème avec un XMLHttpRequest. Le site fonctionne parfaitement dans Chrome et FF, et dans des dizaines et des dizaines de navigateurs Internet Explorer en production. Cette machine ONE (celle que notre société est en train de configurer pour être une machine de démonstration, bien sûr) a décidé qu'elle allait inviter à enregistrer la réponse json à une requête ajax.
La solution regedit acceptée ci-dessous l'a corrigé. Merci.
la source
Vous pouvez voir la réponse dans Fiddler: http://www.fiddler2.com/fiddler2/
C'est un bel outil pour de telles choses!
la source