2017-06-07 3 views
2

Ich habe versucht, Antworten von anderen Fragen und verwendet (von https://gist.github.com/balupton/3696140 aktualisiert):Wie CORS mit Node.js ermöglichen (ohne Express zu verwenden)

var http = require('http'); 
var cors = require('cors'); 

http.createServer(app).listen(3000).use(); 

function app(request, response) { 

response.setHeader('Access-Control-Allow-Origin', '*'); 
response.setHeader('Access-Control-Request-Method', '*'); 
response.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET'); 
response.setHeader('Access-Control-Allow-Headers', '*'); 

... 

} 

Es gibt: http.createServer(...).listen(...).use is not a function

Nach dem Update läuft es aber ich bekomme immer noch 405 Fehler auf der Client-Seite.

+0

Korrekt, 'verwenden' ist keine Methode von' server' - vielleicht [this] (https://gist.github.com/balupton/3696140) wird etwas Licht - sehen als Knoten 'cors' ist Middleware für Express (oder Connect) - es ist nicht überraschend, dass Ihr Code nicht funktioniert, wie es ist –

+0

@JaromandaX https://gist.github.com/balupton/3696140 konnte nicht arbeiten –

+0

Sie haben es falsch gemacht –

Antwort

1

Dies ist, weil Sie eine nicht-so-einfache Anfrage fordern, dh es Preflight Anforderung verarbeiten muss, was ist als HTTP OPTIONS Anfrage (so stellen Sie sicher, dass Ihr Server in der Lage ist, auf diese Methode zu reagieren). Die Preflight-Anforderung ist eine Möglichkeit, Berechtigungen für die tatsächliche Anforderung anzufordern, bevor die tatsächliche Anforderung gestellt wird. Der Server sollte die zwei Header überprüfen, um zu überprüfen, dass die HTTP-Methode und die angeforderten Header gültig und akzeptiert sind.

0

Sie möchten Express nicht verwenden, aber dennoch versuchen, den Middleware-Mechanismus zu verwenden.

wenn

var server = http.createServer(app).listen(3000) 

dann Server die .use Funktion hat, das cors Modul wurde als Middleware entwickelt, was bedeutet, Sie müssen Express/Connect verwenden, um es zu benutzen.

Sie halten wihtout Express.js sein und unterschiedliche Wege zu finden, als cors verwenden, um zB siehe hier https://gist.github.com/balupton/3696140

+0

https://gist.github.com/balupton/3696140 konnte nicht arbeiten –