Javascript 如何通过SSO将标题变量传递给angular 2应用程序?

Javascript 如何通过SSO将标题变量传递给angular 2应用程序?,javascript,node.js,angular,http-headers,single-sign-on,Javascript,Node.js,Angular,Http Headers,Single Sign On,我是新来的角度2+节点。我来自.NET。在.NET中,我知道您只需要获取请求对象并拉出服务器变量,但在angular 2中,您似乎需要了解如何获取请求并拉出头变量 我的公司有自己的SSO,在进入我的应用程序之前,我需要获取它添加的头变量 如何获取传递给应用程序的头变量? 在Angular 2中有没有一个标准的方法来获得它 当我试图亲自研究它时,我一直得到很多“设置标题”的情况我正在为您考虑另一种解决方案。看我的图表 既然你提到了.NET,就在这里使用MVC。 在控制器中,您可以执行以下操作:

我是新来的角度2+节点。我来自.NET。在.NET中,我知道您只需要获取请求对象并拉出服务器变量,但在angular 2中,您似乎需要了解如何获取请求并拉出头变量

我的公司有自己的SSO,在进入我的应用程序之前,我需要获取它添加的头变量

如何获取传递给应用程序的头变量? 在Angular 2中有没有一个标准的方法来获得它


当我试图亲自研究它时,我一直得到很多“设置标题”的情况

我正在为您考虑另一种解决方案。看我的图表

既然你提到了.NET,就在这里使用MVC。 在控制器中,您可以执行以下操作:

    public ActionResult SsoMiddleware()
    {
        string[] keys = Request.Headers.AllKeys;
        string authString = "";
        foreach (var key in keys)
        {
            if (key == "SSO Authentication String")
                authString = Request.Headers[key];
        }

        return View(authString);
    }
在您的视图ssommiddleware.cshtml中,添加Javascript:

    @model string

    ...

    <script type="text/javascript">
        localStorage.setItem('auth-string', '@(Model)');
        window.location.href = 'angular-app.html';
    </script>
@模型字符串
...
setItem('auth-string','@(Model)');
window.location.href='angular app.html';

您无法直接从客户端获取标题

您可以做的是在应用程序中创建一个路径,该路径仅从请求中获取头并将它们从服务器传递回客户端,前提是您的应用程序在您拥有的任何页面上都有头

    app.get('/getVariable', function (req, res) {
  if (req.headers && req.headers.variablename) {
    res.status(200);
    res.send({
      name: req.headers.variablename
    });
  } else {
    res.status(404);
    res.send({
      status: 404,
      message: 'Headers not found'
    })
  }
})

我不相信你可以通过客户端JS实现它。请参阅此处的讨论:如果您可以设置标题,我认为可以检索标题。请参阅。然而,这些解决方案要求您首先发送XMLHttpRequest,而不是您的案例。当它从外部网站重定向到我时,似乎找不到解决方案。即使使用此解决方案,也是如此。我仍然不知道如何获取标题信息或从外部站点获取标题。我问题中的细节可能会误导。虽然我的背景是.NET,但我使用的是angular 2和nodejs。我没有使用.NET+Angular 2您使用什么库作为HTTP服务?您是指HTTP服务器吗?在我的计算机上,我使用Angular CLI运行。当它被托管时,它将通过http服务器spa转到PCF