使用express.static在认证后显示文件时,出现内容安全策略错误。

问题描述 投票:0回答:1

我试图使用nginx作为代理服务器,并在显示privatestatic文件之前使用express+passport来验证用户。

我现在只用http工作(在开发阶段)。我发现 Express+Nginx。不能提供静态文件 并从中学到了不少东西,但我的代码却不能用。

我的nginx设置。

http {

    server {
        listen 80;
        root /var/www/html;

        location /private {
            proxy_pass http://myIP4:3000/private; #3000 is the port for express server
            proxy_method GET;
        }
    }
}

我的快递(护照)代码是这样的

 ...
 ...
 #simplified login, real code is longer
 app.use('/login', passport.authenticated('local'),function(req, res){
     res.redirect('/private/index.html');  #if authentication is OK
 });


app.use(function(req,res,next){
    if ((req.url !== '/login') && (!req.isAuthenticated()) ){ #not the login page and not authentication failed
            res.redirect(301,'http://myIP4/login.html');
    }
    else {#if authenticated 
        console.log('authentication OK');        
        express.static("/var/www/html/private/");
    }
});

我的登录API工作正常,当我提交用户名密码后,我可以看到登录成功。但是重定向有一些问题:浏览器不能显示目标文件:privateindex.html(登录后)和privatetest.html(登录成功后直接在浏览器中输入完整的url)。

浏览器显示。

 Cannot GET /private/index.html 

浏览器的Debug显示。

Content Security Policy: The page’s settings blocked the loading of a resource at http://myIP4/favicon.ico (“default-src”).

我找到了一些关于设置Content_Secrity_policy的帖子,但我尝试了一下,还是不能让它工作。

谢谢你的时间帮助

express nginx redirect static
1个回答
0
投票

我通过在express中修改解决了这个问题。

从:

express.static("/var/www/html/private/");

到。

app.use ('/private',express.static('/var/www/html/private'));

现在它的工作。

© www.soinside.com 2019 - 2024. All rights reserved.