"正在尝试在使用Express.js Web框架的Node.js应用程序中支持CORS。首先,这样做(代码是用CoffeeScript语法编写的):
app.options ""*"", (req, res) ->
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
# try: 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
# try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
这似乎并不奏效。好像我的浏览器(Chrome)没有发送初始的OPTIONS请求。需要提交一个跨源GET请求到:
app.get ""/somethingelse"", (req, res) ->
# ...
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
它是对的(在Chrome中)。这也适用于Safari。
在实现CORS的浏览器中,每个交叉源GET或POST请求之前都有一个OPTIONS请求,用于检查GET或POST是否正确。
所以我的主要问题是,怎么这似乎没有发生?为什么不是我的app.options块被调用?为什么我需要在我的主app.get块中设置标题?"
相似问题