Javascript 如何通过SSO将标题变量传递给angular 2应用程序?
我是新来的角度2+节点。我来自.NET。在.NET中,我知道您只需要获取请求对象并拉出服务器变量,但在angular 2中,您似乎需要了解如何获取请求并拉出头变量 我的公司有自己的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。 在控制器中,您可以执行以下操作:
当我试图亲自研究它时,我一直得到很多“设置标题”的情况我正在为您考虑另一种解决方案。看我的图表 既然你提到了.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