【发布时间】:2019-05-14 06:37:06
【问题描述】:
我有一台 Digital Ocean Linux 服务器。 我在同一台服务器中部署了我的 REST API 和前端。 我的后端使用 Node.JS 运行,前端使用 AngularJS。
启用 HTTPS 后,我将所有 REST URL 更改为 HTTPS。 像这样:
var mainHost = "https://xxx.xxx.xxx.xx:7000/api";
现在我收到了这个 CORS 错误:
跨域请求被阻止:同源策略不允许读取位于https://xxx.xxx.xxx.xx:7000/api/user_manage/login 的远程资源。 (原因:CORS 请求未成功)。
我也在使用 Node.JS CORS 插件。
var cors = require('cors');
var app = express();
app.use(cors());
这始于我添加 HTTPS 并尝试了很多事情。包括更改 .htaccess 和添加一些元标记。还是不行。这是什么原因?为什么添加 HTTPS 后出现 CORS 错误?请帮我解决这个问题。
这是服务层的控制器调用:
sessionService.getAllSessions(100, 0).then(function (data) {
console.log(data);
$scope.allSessions = data.data;
});
这是服务层:
getAllSessions: function (limit, offset) {
return $http({
method: "GET",
url: host.session_manage + '/session/' + limit + '/' + offset
}).then(function (response) {
return response.data;
});
}
正如您在上一节中看到的那样,我没有在服务调用中使用标头。
这是服务器代码 sn -p :
var express = require("express");
var bodyParser = require("body-parser");
var morgan = require("morgan");
var config = require("./config");
// var cors = require('cors');
var app = express();
// app.use(cors());
// app.use(cors({
// origin: 'https://xxxxxx.com'
// }));
app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); });
app.set('views', './app/views');
app.set('view engine', 'pug');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(morgan('dev'));
var session = require('./app/routes/session')(app, express);
app.use('/api/session_manage', session);
app.listen(config.port, function (err) {
if (err) {
console.log(err);
} else {
console.log("localhost:7000");
}
});
谢谢你们。
【问题讨论】:
-
这似乎与您在stackoverflow.com/questions/53756621/… 的问题中描述的环境相同 - 如果是这样,那么失败的原因与您的 CORS 配置无关。相反,这听起来像是在
https://xxx.xxx.xxx.xx:7000服务器上实际上没有正确配置 SSL 的问题。
标签: angularjs node.js https cors