Angularjs 使用ExpressJS/NodeJS对https访问的不安全响应
我一直在使用wamp构建的自定义站点上重复出现此问题 我按照说明为ssl生成自签名证书和私钥。然后,我使用nodejs/expressjs创建一个https服务器,在该服务器上使用web api处理我站点上的数据。然后我使用angularjs来显示数据 现在让人困惑的是,有时候,它可以在谷歌浏览器上运行。然而,它在firefox、opera和MicrosoftEdge上肯定失败了 在angularjs文件中,我有以下内容:Angularjs 使用ExpressJS/NodeJS对https访问的不安全响应,angularjs,node.js,express,xmlhttprequest,Angularjs,Node.js,Express,Xmlhttprequest,我一直在使用wamp构建的自定义站点上重复出现此问题 我按照说明为ssl生成自签名证书和私钥。然后,我使用nodejs/expressjs创建一个https服务器,在该服务器上使用web api处理我站点上的数据。然后我使用angularjs来显示数据 现在让人困惑的是,有时候,它可以在谷歌浏览器上运行。然而,它在firefox、opera和MicrosoftEdge上肯定失败了 在angularjs文件中,我有以下内容: testControllers.controller('summoner
testControllers.controller('summoner-by-name', ['$scope', '$http', '$resource', function($scope, $http, $resource) {
$scope.summonerName = {text: 'abc'};
$scope.items = regions;
$scope.submit = function ()
{
setTimeout(function() {
data = {"summonerName": $scope.summonerName.text, "region": $scope.items.selectedOption.name, "PID": "000"};
$http({
method: 'POST',
url: 'https://localhost:3030/custom_Project',
dataType: "json",
headers: {
"Content-Type": "application/json",
"Content-Length": data.length
},
data: data
}).then(function(response) {
$scope.posts = response.data;
});
}, 1000);
}
}]);
...
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'https://custom_site.com');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
var options = {
key: fs.readFileSync('C:/wamp/www/custom_Project/ssl_certs/private.key'),
cert: fs.readFileSync('C:/wamp/www/custom_Project/ssl_certs/public.crt'),
ca: fs.readFileSync('C:/wamp/bin/php/php5.5.12/cacert.pem'),
};
app.post('/custom_Project', function (req, res) {
...
}
https.createServer(options, app).listen(3030);
在node js文件中,我有以下内容:
testControllers.controller('summoner-by-name', ['$scope', '$http', '$resource', function($scope, $http, $resource) {
$scope.summonerName = {text: 'abc'};
$scope.items = regions;
$scope.submit = function ()
{
setTimeout(function() {
data = {"summonerName": $scope.summonerName.text, "region": $scope.items.selectedOption.name, "PID": "000"};
$http({
method: 'POST',
url: 'https://localhost:3030/custom_Project',
dataType: "json",
headers: {
"Content-Type": "application/json",
"Content-Length": data.length
},
data: data
}).then(function(response) {
$scope.posts = response.data;
});
}, 1000);
}
}]);
...
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'https://custom_site.com');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
var options = {
key: fs.readFileSync('C:/wamp/www/custom_Project/ssl_certs/private.key'),
cert: fs.readFileSync('C:/wamp/www/custom_Project/ssl_certs/public.crt'),
ca: fs.readFileSync('C:/wamp/bin/php/php5.5.12/cacert.pem'),
};
app.post('/custom_Project', function (req, res) {
...
}
https.createServer(options, app).listen(3030);
以下是我在尝试从nodejs/expressjs服务器检索数据时在控制台上收到的消息:
Microsoft Edge:
SCRIPT7002:XMLHttpRequest:网络错误0x80070005,访问被拒绝
火狐:
已阻止跨源请求:同一源策略不允许读取位于的远程资源。(原因:CORS请求失败)
Opera(偶尔在Chrome上):
选项网络::错误\u不安全\u响应
我假设这是因为证书是自签名的,但我可能错了。有什么想法吗?我找到了解决问题的方法 对于firefox和opera,我在开发者工具的网络选项卡上跟踪了错误。由于证书问题,请求未通过节点js脚本。因此,使用这些浏览器,我导航到 一个提示告诉我该站点不受信任,要导航到它,我必须将其添加到受信任站点列表中。完成后,我运行了ajax post调用,它成功地向我显示了结果
然而,Edge并没有给我带来任何运气。它在左上角有一个错误,说该网站不可信,我不能像firefox、opera和chrome那样做。我找到了解决问题的方法 对于firefox和opera,我在开发者工具的网络选项卡上跟踪了错误。由于证书问题,请求未通过节点js脚本。因此,使用这些浏览器,我导航到 一个提示告诉我该站点不受信任,要导航到它,我必须将其添加到受信任站点列表中。完成后,我运行了ajax post调用,它成功地向我显示了结果
然而,Edge并没有给我带来任何运气。左上角有一个错误,说该网站不可信,我不能像firefox、opera和chrome那样做。更新:我决定尝试一些建议,看看我的问题是否可以解决。到目前为止,这些都是我尝试过的,但它们还没有为我解决问题:1。我通过npm添加了cors模块;2.我已经在我的根文件夹中添加了一个.htaccess文件,该文件允许使用*进行访问控制;3.我编辑了httpd.conf以包含访问控制允许源代码;我遇到了完全相同的问题。更新:我决定尝试一些建议,看看我的问题是否可以解决。到目前为止,这些都是我尝试过的,但它们还没有为我解决问题:1。我通过npm添加了cors模块;2.我已经在我的根文件夹中添加了一个.htaccess文件,该文件允许使用*进行访问控制;3.我编辑了httpd.conf以包含访问控制允许源代码;我遇到了完全相同的问题。