Nodejs - 在服务器端获取客户端 URL(DNS 名称)

Nodejs - Get client url (dns name) on server side

提问人:kaay 提问时间:5/11/2022 更新时间:5/11/2022 访问量:859

问:

我想获取客户端 url,在服务器端的身份验证过程后继续(重定向): 在我的脚本中:

    ...
    server.register({
        register: require('./libs/hapi-passport-saml'),
        options: {
            callbackUrl: /* I want to put client url her */, 
            issuer: ....,
            ...
        }
    }
    ...

谢谢

node.js SAML 服务器端 快乐 回调 URL

评论


答:

0赞 Kaleem Shoukat 5/11/2022 #1

你可以这样做: 首先需要 url 包在顶部:

const url = require('url');

然后,您可以在函数中使用客户端 url:

const path = url.parse(req.url).path;

评论

0赞 kaay 5/11/2022
谢谢你@kaleem。我有这个:“ReferenceError:req 未定义”
0赞 Abdurrahim Ahmadov 5/11/2022 #2

您可以使用 和 属性获取完整的 URL。req.hostnamereq.originalUrl

app.get('/foo', (req,res)=>{
   const clientUrl = req.hostname + req.originalUrl;
   console.log(clientUrl);// yourdomainname.com/foo?s=4  full url string
})

在快乐的框架中,你可以使用,现在你可以在任何地方使用你想要的任何地方server.app.url=request.info.hostname+request.pathserver.app.url

评论

0赞 kaay 5/11/2022
谢谢。如何将其添加到“server.register”中?
0赞 Abdurrahim Ahmadov 5/11/2022
您可以将其保存在 App.locals 对象中,例如: 并且可以在任何地方使用它。设置后,app.locals 属性的值将在整个应用程序的整个生命周期内持续存在。如果这能解决您的问题,请告诉我app.locals.url = req.hostname + req.originalUrl
0赞 Abdurrahim Ahmadov 5/11/2022
@kaay在快乐框架中,你可以使用server.app=request.info.hostname+request.path
0赞 kaay 5/12/2022
你好,我试着这样做,但是:),在server.ext('onPreResponse', function (request, reply) { console.log(request.info.hostname); // ==> I have the hostname ;) .... }) ... server.register({ register: require('./libs/hapi-passport-saml'), options: { callbackUrl: /* how can do it here */, issuer: ...., ... } } ...
0赞 Abdurrahim Ahmadov 5/12/2022
@kaay上面提到的,将它()分配给任何你想要的地方,并使用它( )request.info.hostname+request.pathserver.app.url callbackUrl: server.app.url