dataType:'jsonp',
Está realizando una solicitud JSONP, pero el servidor responde con JSON.
El navegador se niega a tratar de tratar el JSON como JSONP porque sería un riesgo de seguridad. (Si el navegador se trata de tratar el JSON como JSONP entonces sería, en el mejor de falla).
Consulte esta pregunta para obtener más detalles sobre qué es JSONP. Tenga en cuenta que es un truco desagradable para evitar la misma política de origen que se utilizó antes de que CORS estuviera disponible. CORS es una solución al problema mucho más limpia, segura y potente.
Parece que está tratando de hacer una solicitud de origen cruzado y está lanzando todo lo que se le ocurre en una enorme pila de instrucciones contradictorias.
Debe comprender cómo funciona la política del mismo origen.
Consulte esta pregunta para obtener una guía detallada.
Ahora algunas notas sobre su código:
contentType: 'application/json',
- Esto se ignora cuando usa JSONP
- Estás haciendo una solicitud GET. No hay un cuerpo de solicitud para describir el tipo de.
- Esto hará que una solicitud de origen cruzado no sea simple, lo que significa que, además de los permisos básicos de CORS, también debe lidiar con un vuelo previo.
Eliminar eso.
dataType:'jsonp',
- El servidor no responde con JSONP.
Quita esto. (Puede hacer que el servidor responda con JSONP, pero CORS es mejor).
responseType:'application/json',
Esta no es una opción compatible con jQuery.ajax. Quita esto.
xhrFields: {withCredentials: false},
Este es el valor predeterminado. A menos que lo esté configurando en verdadero con ajaxSetup, elimine esto.
headers: {
'Access-Control-Allow-Credentials' : true,
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods':'GET',
'Access-Control-Allow-Headers':'application/json',
},
- Estos son encabezados de respuesta. Pertenecen a la respuesta, no a la solicitud.
- Esto hará que una solicitud de origen cruzado no sea simple, lo que significa que, además de los permisos básicos de CORS, también debe lidiar con un vuelo previo.