2011-01-25 4 views
3

Je travaille sur un service web dont le besoin de retourner des données JSON. I read that I should use application/json mais je ne suis pas sûr des problèmes que cela peut causer?Quels problèmes peuvent utiliser l'application de type MIME/JSON?

Par exemple, les anciens navigateurs le supporteront-ils? (IE6 +, FF, Opera, etc.)

Ou est-il possible que les utilisateurs derrière les pare-feu d'entreprise/serveurs proxy bloquent l'application de type mime/json?

Quels problèmes, le cas échéant, avez-vous rencontrés suite à ce conseil?

Répondre

3

Considérons IE. Supposons que vous ayez un iFrame caché que vous utilisez pour demander le téléchargement d'un fichier. Par exemple

<iframe src="getFile?id=123"> 

Maintenant, le serveur peut envoyer un message d'erreur codé JSON comme

{ 
    error: 'File 123 does not exist', 
    retryLater: false 
} 

Si ce message d'erreur est envoyé comme application/json, une boîte de dialogue de téléchargement apparaît, parce que le texte JSON est erronée pour le fichier réel. D'autre part, un type MIME de text/plain provoquera le rendu du message dans l'iFrame, et vous pouvez l'extraire, et le transformer en une pop-up fantaisie ou quelque chose en utilisant JScript.


(Edit)

exemple réel: EXTJS Fileupload - Problem with IE8 security bar

+0

Merci pumbaa80, et compte tenu de ce que Eric a dit ci-dessous, il semble que l'utilisation de texte/x-json peut être le meilleur. –

+0

Je me suis rendu compte tout à l'heure que 'text/x-json' ouvre une boîte de dialogue de téléchargement, donc vous avez besoin de' text/plain' pour le contenu iframe. En outre, [uploading] (http://yuilibrary.com/projects/yui2/ticket/2528941) est un exemple beaucoup plus utile que le téléchargement. – user123444555621

1

Cela a été discuté avant:

What is the correct JSON content type?

Tout pare-feu qui bloquent le type MIME causera des problèmes avec les applications Web de style AJAX, donc je voudrais vraiment vous inquiétez pas à ce sujet.

+0

Merci pour votre commentaire, Oui j'ai lu la discussion que vous avez souligné. Je cherchais plus d'exemples concrets du monde réel, que certains utilisateurs SO peuvent avoir des expériences. Comme Pumbaa80, répondez ci-dessous. Bon à savoir sur les pare-feu. Merci –

1

Ayant juste eu un long combat avec IE8 moi-même avec cela, je trouve que si vous chargez le JSON dans un iframe sous forme de texte/plaine, IE8 va envelopper dans une étiquette. Si vous récupérez le contenu avec innerHTML et que vous essayez de l'analyser en tant que json, cela échouera. J'ai fini par devoir envoyer le contenu au format texte/html, ce qui semble tout à fait faux, mais fonctionne dans IE et ne semble pas gâcher d'autres navigateurs plus modernes de gestion AJAX.

Questions connexes