J'ai une machine sur mon réseau local (machineA) qui dispose de deux serveurs web. La première est à la une dans XBMC (sur le port 8080) et affiche notre bibliothèque. Le second serveur est un CherryPy script python (le port 8081) que j'utilise pour déclencher une conversion de fichier sur demande. Le fichier conversion est déclenchée par un AJAX requête POST à partir de la page servie par le serveur XBMC.
- Goto http://machineA:8080 qui affiche bibliothèque
- La bibliothèque est affichée
- L'utilisateur clique sur "convertir" lien qui émet la commande suivante
jQuery Ajax Demande
$.post('http://machineA:8081', {file_url: 'asfd'}, function(d){console.log(d)})
- Les problèmes de navigateur HTTP OPTIONS de demande de avec les en-têtes suivants;
En-Tête de requête - OPTIONS
Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://machineA:8080
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
- Le serveur répond avec le suivant;
En-Tête de réponse - OPTIONS (STATUT = 200 OK)
Content-Length: 0
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:40:29 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: text/html;charset=ISO-8859-1
- La conversation s'arrête ensuite. Le navigateur doit, en théorie, de délivrer un message de requête que le serveur a répondu avec la bonne (?) La SCRO en-têtes (Access-Control-Allow-Origin: *)
Pour un dépannage, j'ai également publié la même somme.poste de commande de http://jquery.com. C'est là où je suis perplexe, à partir de jquery.com le poste demande de travaux, une des OPTIONS de demande est envoyée à la suite d'un POST. Les en-têtes de cette transaction sont ci-dessous;
En-Tête de requête - OPTIONS
Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://jquery.com
Access-Control-Request-Method: POST
En-Tête de réponse - OPTIONS (STATUT = 200 OK)
Content-Length: 0
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:37:59 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: text/html;charset=ISO-8859-1
En-Tête de requête POST
Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://jquery.com/
Content-Length: 12
Origin: http://jquery.com
Pragma: no-cache
Cache-Control: no-cache
En-Tête de réponse - la POSTE (STATUT = 200 OK)
Content-Length: 32
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:37:59 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: application/json
Je ne peux pas savoir pourquoi la même demande de travail à partir d'un site, mais pas les autres. Je suis en espérant que quelqu'un pourrait être en mesure de préciser ce que je suis absent. Merci pour votre aide!