Estoy construyendo una aplicación de Spotify que toma los datos JSON de una API REST, usando direcciones URL como¿Por qué se cancelan las solicitudes JSON a mi API externa en mi aplicación Spotify?
http://www.mydomain.com/api/command?option=value
En mi Spotify aplicación manifiesta he puesto los permisos requeridos para mi anfitrión API:
"RequiredPermissions": [ "http://*.mydomain.com" ]
También he configurado Compartir recursos de origen cruzado en los encabezados de respuesta de mi API. Aquí está un ejemplo real:
Server: nginx/0.7.65
Date: Thu, 08 Dec 2011 09:07:16 GMT
Content-Type: application/json
Connection: keep-alive
X-Powered-By: Mojolicious (Perl)
Set-Cookie: mojolicious=eyJwcmVmcyI6e30sImZpbHRlcnMiOnsicGllciI6eyJzb3VyY2VzIjpbMjBdfSwiZWxlYyI6eyJzb3VyY2VzIjpbMTMsMTddLCJ4dGFncyI6WyJzaG9lZ2F6ZSJdLCJ0YWdzIjpbImVsZWN0cm9uaWMiXX0sInB1bmtkdWIiOnsieHRhZ3MiOlsicmVnZ2FlIl0sInRhZ3MiOlsicHVuayIsImR1YiJdfX0sImV4cGlyZXMiOjEzMjMzMzg4MzZ9--c6d6214525b5d56785eebc99217394a1; Version=1; Path=/; expires=Thu, 08 Dec 2011 10:07:16 GMT
Content-Length: 23381
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: *
200 OK
En Spotify, en la pestaña de la red inspector de cromo, veo que la solicitud está siendo cancelada:
Name: command www.mydomain.net/api
Method: GET
Status Text: (canceled)
Type: undefined
Initiator: jquery-1.js:7180 (Script)
Size Content: 13B (0B)
Time Latency: 21ms (0.0 days)
Si funciono mi aplicación en Chrome en mi escritorio (fuera de Spotify) la solicitud no se cancela y todo está bien.
¿Qué estoy haciendo mal? O tal vez este es un error (¿función?) En la versión preliminar de Spotify.
Lo primero que me gustaría tratar de hacer es analizar la solicitud real que está realizando Spotify usando una herramienta como Wireshark. Luego puede verificar que a) la aplicación Spotify esté enviando un encabezado válido de origen (que se requiere para CORS) yb) puede ver los encabezados de solicitud personalizados enviados por Spotify. Tenga en cuenta que la especificación CORS no permite '*' como un valor para el encabezado Access-Control-Allow-Headers. Recomendaría repetir los parámetros que recibes en Access-Control-Request-Headers. – monsur
Tuve el mismo problema y, como monsur dijo anteriormente, el problema fue el acceso-control-permitir-encabezados. Cambié mi servidor para configurar el encabezado a "*" y funcionó. – slurmomatic
monsur - Probaré wireshark, pero Chrome muestra la solicitud saliente y no hay encabezados inusuales. slurmomatic: ya tengo los encabezados de permiso configurados en "*". ¿Tu problema fue con Spotify? – nick