2008-09-21 8 views
117

Tengo un servicio web que cuando se llama sin especificar una devolución de llamada devolverá una cadena JSON usando application/json como tipo de contenido.¿El mejor tipo de contenido para servir a JSONP?

Cuando se especifica una devolución de llamada, envolverá la cadena JSON en una función de devolución de llamada, por lo que ya no es realmente válida JSON. Mi pregunta es, ¿debería servirlo como application/javascript en este caso o seguir usando application/json?

Respuesta

142

Use application/javascript, de esa forma los clientes pueden confiar en el tipo de contenido sin tener que verificar manualmente si una respuesta tiene relleno o no.

+1

Se produce un error en el IE 9 con el mensaje "SEC7112: Guión de http://xyz.com fue bloqueado debido a la falta de coincidencia de tipos MIME "¿Alguna idea de por qué? –

+0

El tipo de contenido "aplicación/javascript" puede no coincidir con "texto/javascript" que se especificó en la etiqueta de script (o se espera de forma predeterminada por algún motivo) –

+0

Basado en la información de [este artículo] (http://blogs.msdn.com /b/ie/archive/2010/10/26/mime-handling-changes-in-internet-explorer.aspx) text/javascript y application/javascript funcionarían en IE 9. Me pregunto @ pit-digger si el servidor simplemente no devolvía el encabezado de tipo de contenido correcto. – spig

115

Use application/jsonas per rfc4627.txt si lo que devuelve es simple JSON.

Si devuelve JavaScript (que es realmente lo que es JSONP), a continuación, utilizar application/javascriptas per rfc4329.txt

+19

+1 por citar RFC. –

Cuestiones relacionadas