Node Express Mongoose MongoDB CORS失败

时间:2015-07-21 20:07:26

标签: node.js curl mongoose debian cors

我在Debian VPS网络服务器上使用Node / Express / Mongoose / MongoDB但由于某种原因,在线CORS请求没有被触发。我只想说一切都在我的本地服务器上完美运行。

当我将它上传到我的Debian VPS网络服务器时,但是cors请求永远不会通过。我知道这是因为调试日志永远不会触发。 MongoDB服务器正在运行并且节点/快速服务器正在运行。我有npm重新安装快递/猫鼬,甚至连许多次加入,并且不认为这是一个问题......

我已经使用cURL -H w / -origin标记在服务器上测试了一些东西。响应在控制台中正确返回。这让我相信CORS请求被某种方式阻止(可能是由浏览器??),甚至从未达到快速服务器。我尝试启动没有安全标志的浏览器也无济于事......一个奇怪的事实是,当响应确实返回w / cURL时,它们有时会列出不同的来源,即使我指定了一个带有标志的原点。混乱...

我尝试过多次不同的时间和方式来改变访问起源。我试过允许所有这些。我已经尝试允许特定于请求的那些...我已经尝试使用apache2头部mod并使用.htaccess文件来允许cors。我也试过它的PHP标题无济于事。

url:www.kensnote.com 浏览器错误响应如下:
Chromium-browser :“无法加载资源” Firefox:阻止跨源请求:同源策略禁止在http://localhost:10005/threadpreview读取远程资源。 (原因:CORS请求失败)。

Firefox Firebug请求标头:

  

接受application / json,text / javascript, / ; Q = 0.01   Accept-Encoding gzip,deflate Accept-Language en-US,en; q = 0.5   Cache-Control max-age = 0连接保持活动DNT 1主机   localhost:10005 If-None-Match W /“ssUy2L + Up13MCm2LISgPtQ ==”原点
  http://www.kensnote.com Referer http://www.kensnote.com/   用户代理Mozilla / 5.0(X11; Linux i686; rv:39.0)Gecko / 20100101   火狐/ 39.0

1 个答案:

答案 0 :(得分:0)

  

在实现CORS的浏览器中,每个跨源GET或POST请求   之前是一个OPTIONS请求,用于检查GET或POST   没关系。

基本上,对于CORS,Firefox会在真实请求之前发送预检选项。 在您的服务器代码中,您应该对OPTIONS请求发送OK响应。检查以下可在路由(或中间件)中使用的示例代码:

res.header("Access-Control-Allow-Headers", "Authorization, Origin, X-Requested-With, Content-Type, Accept");  
res.header("Access-Control-Allow-Methods", "PATCH, POST, GET, PUT, DELETE, OPTIONS");
if ('OPTIONS' === req.method) { 
  return res.send(200);
}