2014-06-11 4 views
6

I CORS funzionano bene con Nginx. Le API sono progettate per inviare codice di stato non 200 - esempio 401, 404 ecc. Per input errati. Il problema è che Chrome annulla/interrompe la richiesta se riceve un codice di stato non 200. Per questo motivo, non sono in grado di mostrare l'errore esatto sul client Web.CORS e non 200 statusCode

Qual è la soluzione per errori di codice di stato CORS non 200?

risposta

0

È necessario utilizzare il modulo more_set_headers.

con -s è possibile scpecify più codice di stato

more_set_headers -s '404,400,403' 'Access-Control-Allow-Origin: http://domain.com';

Tuttavia se non è installato questo modulo in nginx è necessario ricompilare. compilarlo:

wget http://nginx.org/download/nginx-1.7.8.tar.gz 
git clone https://github.com/openresty/headers-more-nginx-module.git 
tar -xzvf nginx-1.7.8.tar.gz 
cd nginx-1.7.8 
./configure --prefix=/opt/nginx --add-module=/path/to/headers-more-nginx-module 
make 
make install 
7

Per impostazione predefinita Nginx aggiunge solo le intestazioni per le richieste che ritiene di successo. Puoi aggiungere l'intestazione senza considerare il codice di risposta, aggiungendo il parametro always alla direttiva add_header, ad es.

add_header 'Access-Control-Allow-Origin' '*' always;