.%20Los%20encabezados%20de%20respuesta%20CORS%20no%20pasan.png)
Estoy usando Dokku para alojar mi aplicación en DigitalOcean. DokkuEjecute nginx 1.6 para representar aplicaciones Docker que simulen un entorno similar a Heroku. Todas las aplicaciones comparten configuraciones predeterminadas similares a las que se muestran a continuación.
Mi servidor Node.js usamiddleware CORSpara indicarle al navegador que permita que www.myapp.com realice llamadas a api.myapp.com:
Esto funciona bien en mi computadora local. Cuando lo implemento, aparece un error CORS en el navegador:
XMLHttpRequest cannot load https://api.myapp.com/r_u_up. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.myapp.com' is therefore not allowed access. The response had HTTP status code 502.
Entonces, WTF, cambio.
encontré estoconfiguración de nginx CORSpero parece muy tosco. ¿Es este código antiguo o la mejor manera? EsteEl complemento usa esa configuración.
Preferiría una configuración más simple que simplemente pase los encabezados de respuesta. Mi aplicación no necesita nginx para interceptarlos. ¿Cómo puedo configurar eso?
Aplicación nginx.conf:
upstream www { server 172.17.0.135:5000; }
server {
listen [::]:80;
listen 80;
server_name www.myapp.com ;
return 301 https://www.myapp.com$request_uri;
}
server {
listen [::]:443 ssl spdy;
listen 443 ssl spdy;
server_name www.myapp.com;
keepalive_timeout 70;
add_header Alternate-Protocol 443:npn-spdy/2;
location / {
proxy_pass http://www;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}
include /home/dokku/www/nginx.conf.d/*.conf;
}
Respuesta1
Actualización: resulta que CORS es una especificación zombificada, muerta y viviente, y sí, hacer esto con una configuración nginx es la mejor manera.
La razón por la que nginx es la mejor manera es que nginx es el proceso más rápido y más cercano al cliente.
Si nginx puede encargarse de la solicitud sin tocar su aplicación (node.js, php, rails, etc.), entonces su aplicación se escalará más fácilmente y se ejecutará más rápido.