J'ai l'application Tornado, fonctionnant comme un serveur API, qui traite les demandes provenant de plusieurs autres sites. Je prévois également d'utiliser nginx comme équilibreur de charge.Tornade + cookies nginx CORS
Le problème provient des cookies CORS. Lorsque quelqu'un visite le site du partenaire, partner.com
, par exemple, le script JS envoie plusieurs requêtes à mon serveur. La première demande vise à définir plusieurs cookies. Mais ça ne marche pas.
Ce que je:
- Aucun paramètre d'en-tête sur tornade
La configuration suivante sur nginx
access_log /var/log/nginx/api_access.log; error_log /var/log/nginx/api_error.log; add_header Access-Control-Allow-Origin http://salesmarine.ru; add_header Access-Control-Allow-Credentials 'true'; add_header Set-Cookie test=111; location/{ proxy_pass_header Server; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://api; proxy_next_upstream error; }
Toutes les demandes de JS sont envoyés avec
.withCredentials=true;
l'option Voici la demande données:Accept:*/* Accept-Encoding:gzip,deflate,sdch Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:max-age=0 Connection:keep-alive Content-Type:application/x-www-form-urlencoded Cookie:t_id=d9ed7601a2074e78b5ba38ab58ad7043; t_id_session=0c7910f9b3194e899d233e68380df59f; test=111 Host:server.com If-None-Match:"bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f" Origin:http://example.com Referer:http://example.com/test User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36 Query String Parametersview sourceview URL encoded id:54129700102392342dff6dbe apiKey:2a8bb0a06bca4ad59c4d4079dce30a30 client_id:54129700102392342dff6dbe apikey:2a8bb0a06bca4ad59c4d4079dce30a30 user_id:null Response Headersview source Access-Control-Allow-Credentials:true Access-Control-Allow-Origin:http://example.com Connection:keep-alive Date:Fri, 12 Sep 2014 19:40:17 GMT Etag:"bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f" Mime-Type:text/javascript Server:TornadoServer/4.0.2 Set-Cookie:test=111
Et aucun cookie n'est envoyé. Quel pourrait être le problème?
Et aussi ce qui est mieux - les en-têtes de contrôle de tornade, ou nginx?