Express跨域资源共享(CORS)不起作用。

3

我刚开始使用nodejs express模板,但是cors不起作用。

我使用了npm install cors --save命令。

以下是文件内容:

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

app.use(cors());

var corsOptions = {
  origin: 'https://example.com/',
  optionsSuccessStatus: 200
};

app.get('/', cors(corsOptions), function(req, res, next) {
    res.json({ message: 'hooray! welcome to our api!' });
});

app.get('/tt', function(req, res, next) {
    res.json({ message: 'hooray! welcome to our api!' });
});

var port = process.env.PORT || 3030;
app.listen(port);
console.log('Magic happens on port ' + port);

现在,当我访问localhost:3030/tt或/时,即使我不应该看到内容,但我仍然可以看到内容。这有什么问题...我刚刚浪费了2个小时的时间 :( 目前,我不想使用CORS,但在不久的将来,当我的应用程序完成后,我希望只允许来自我的项目的呼入调用,因为这个应用程序将是我的API。
1个回答

4
您所描述的行为是我所期望的。 CORS无法帮助您在服务器上过滤传入的调用。在这种情况下,浏览器的CORS检查不会启动,因为似乎您直接在浏览器中输入了URL。仅当从特定域加载的网页尝试访问/提交到不同域中的URL时,浏览器才进行CORS检查。 另一种思考CORS的方法。CORS旨在保护坐在浏览器前面的用户,而不是被访问的服务器代码。

谢谢您的回复。如何最好地保护我的apiserver.com,只允许来自mywebpage.com的访问? - Marketingexpert
API用户身份验证和令牌将帮助您仅允许使用API。 - Emanuel Graf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接