.%20CORS-Antwortheader%20werden%20nicht%20durchgelassen.png)
Ich verwende Dokku, um meine App bei DigitalOcean zu hosten. DokkūFühren Sie nginx 1.6 aus, um Docker-Apps als Proxy zu verwenden, die eine Heroku-ähnliche Umgebung simulieren. Die Apps verwenden alle ähnliche Standardkonfigurationen wie unten.
Mein Node.js-Server verwendetCORS-Middlewareum dem Browser mitzuteilen, dass www.myapp.com Aufrufe an api.myapp.com zulassen soll:
Auf meinem lokalen Computer funktioniert das einwandfrei. Wenn ich es bereitstelle, erhalte ich im Browser einen CORS-Fehler:
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.
Also, WTF, Ende.
ich habe das gefundennginx CORS-Konfigurationaber es scheint sehr veraltet zu sein. Ist das alter Code oder der beste Weg? DasDas Plugin verwendet diese Konfiguration.
Ich würde eine einfachere Konfiguration bevorzugen, die nur die Antwortheader durchgibt. Meine App benötigt kein Nginx, um sie abzufangen. Wie kann ich das konfigurieren?
App nginx.conf's:
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;
}
Antwort1
Update: Es stellt sich also heraus, dass CORS eine verrückte Zombie-Spezifikation ist, und ja, dies mit einer Nginx-Konfiguration zu tun, ist der beste Weg.
Der Grund, warum Nginx die beste Lösung ist, liegt darin, dass Nginx der schnellste Prozess ist und dem Client am nächsten ist.
Wenn nginx die Anfrage bearbeiten kann, ohne Ihre App (node.js, php, rails usw.) zu berühren, lässt sich Ihre App einfacher skalieren und läuft schneller.