如何让CORS与Node.js(不使用Express)

我尝试了其他问题的答案,并使用(从https://gist.github.com/balupton/3696140更新):

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', '*'); ... } 

它返回: http.createServer(...).listen(...).use is not a function

更新后运行,但我仍然在客户端得到405错误。

这是因为你正在请求一个不那么简单的请求,这意味着它需要处理作为HTTP OPTIONS请求的预检请求(所以要确保你的服务器能够响应这个方法 )。 在进行实际的请求之前,预检请求是一种询问实际请求的权限的方式。 服务器应检查上面的两个标题,以validationHTTP方法和请求的标头是否有效并被接受。

你不想使用Express,而是试图使用它的中间件机制。

如果

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

那么服务器没有corsfunction, cors模块被devise为一个中间件,这意味着你需要使用Express / Connect才能使用它。

你可以保持不被expression,并find不同的方式比使用cors ,例如看到这里https://gist.github.com/balupton/3696140