【问题标题】:Nodejs - Get client url (dns name) on server sideNodejs - 在服务器端获取客户端 url(dns 名称)
【发布时间】:2022-05-11 22:19:56
【问题描述】:

我想得到客户网址, 上服务器端在身份验证过程后继续(重定向): 在我的脚本里面:

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

谢谢

【问题讨论】:

    标签: node.js saml server-side hapi callbackurl


    【解决方案1】:

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

    const url = require('url');
    

    然后你可以在函数中有客户端 url:

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

    【讨论】:

    • 谢谢@kaleem。我有这个:“ReferenceError:req 未定义”
    【解决方案2】:

    您可以使用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
    })
    
    

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

    【讨论】:

    • 谢谢你。如何将其添加到“server.register”?
    • 您可以将其保存在 app.locals 对象中,例如:app.locals.url = req.hostname + req.originalUrl ,您可以在任何地方使用它。一旦设置,app.locals 属性的值将在应用程序的整个生命周期中保持不变。让我知道这是否能解决您的问题
    • @kaay 在 Hapi 框架中,你可以使用 server.app=request.info.hostname+request.path
    • 再次您好,我尝试这样做,但是:),在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: ...., ... } } ...
    • @kaay 我在上面提到过,将它 (request.info.hostname+request.path) 分配给 server.app.url 并在任何你想要的地方使用它 (callbackUrl: server.app.url)
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 2016-03-19
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多