2016-06-12 10 views
0

Ich mache eine PATCH Anfrage von einem Client auf localhost läuft: 3000 mit dem folgenden Code:Kann nicht erreichen CORS mit Express.js

axios.patch(
    "http://localhost:3090/v1/users/etc/etc/etc", { 
    name, 
    url, 
    }, { 
    headers: { 
     authorization: AUTH_TOKEN() 
    } 
    } 
) 

an einen Server wie folgt konfiguriert:

var app = express(); 
var cors = require('cors'); 
//etc 

//var whitelist = [ 
// 'http://localhost:3000', 
// 'localhost:3000' 
//]; 
//passing this to cors() doesn't help 
//var globalCorsOptions = { 
// origin: function(origin, callback) { 
// callback(null, whitelist.indexOf(origin) !== -1); 
// } 
//}; 

app.use(morgan('combined')); 
app.use(cors()); 
app.options('*', cors()); 
app.use(bodyParser.json({type:'*/*'})); 

app.use('/v1', router); 

var port = process.env.PORT || 3090; 
var ip = process.env.IP || 'localhost'; 
var server = http.createServer(app); 

server.listen(port, ip); 

Aber die Anfrage hängt einfach. Ich kann POST/GET gut machen, aber nicht DELETE/PATCH. Das Preflight passiert gut, aber die eigentliche Anfrage folgt einfach "aufgehalten" auf unbestimmte Zeit. Hier ist der Header für jede Anforderung:

enter image description here enter image description here

Leider diese ziemlich Standard Frage zu stellen, aber ich habe alles versucht.

EDIT: Added der an den Router folgenden (noch nicht funktioniert):

var router = express.Router(); 

router.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Headers", "PATCH,DELETE,OPTIONS,GET,POST"); 
    next(); 
}); 

Der tatsächliche Fehler: enter image description here

+0

Ich glaube nicht, dass "Verbindung abgelehnt" etwas mit CORS zu tun hat. – robertklep

+0

Ja. Das Problem, das Sie sehen, hängt nicht damit zusammen, dass CORS aktiviert ist. Wenn CORS das Problem war, würde der Chrome-Fehler das sagen. –

+0

Ja, ich stimme zu. Benutzt du Fiddler? – Legends

Antwort

1

Auf dem Server müssen Sie auf die Antwort folgenden Header hinzufügen:

headers.Add ("Zugriffssteuerung-Zulassen-Header", "PATCH, DELETE, GET, POST");

Eigentlich alle HTTP-Methoden, die Sie zulassen möchten.

+0

Siehe meine Bearbeitung. Funktioniert immer noch nicht! –

+0

Sollte nicht nötig sein, die "cors" Middleware wird sich darum kümmern. – robertklep

+0

Es ist möglich, nicht überprüft, welche Header OOTB erlaubt sind ... – Legends