Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用ExpressJS/NodeJS对https访问的不安全响应_Angularjs_Node.js_Express_Xmlhttprequest - Fatal编程技术网

Angularjs 使用ExpressJS/NodeJS对https访问的不安全响应

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

我一直在使用wamp构建的自定义站点上重复出现此问题

我按照说明为ssl生成自签名证书和私钥。然后,我使用nodejs/expressjs创建一个https服务器,在该服务器上使用web api处理我站点上的数据。然后我使用angularjs来显示数据

现在让人困惑的是,有时候,它可以在谷歌浏览器上运行。然而,它在firefox、opera和MicrosoftEdge上肯定失败了

在angularjs文件中,我有以下内容:

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以包含访问控制允许源代码;我遇到了完全相同的问题。