Javascript 在http响应中将JWT与html文档一起发送

Javascript 在http响应中将JWT与html文档一起发送,javascript,cookies,jwt,Javascript,Cookies,Jwt,当需要发送html文档正文时,如何在客户端通过身份验证后立即向客户端发送JWT而不使用cookie 这里有文档、博客文章和教程,解释了无cookie的jwt身份验证,并利用Web存储API来保存jwt客户端。但所有这些都是微不足道的例子,没有在http响应体中发送一个html文档来进行身份验证,这在我可以想象的一些实际应用程序中是必要的。cookie可以在cookie http响应头中与同一响应正文中的html文档一起发送,我还没有看到一篇文章解释如何使用jwt而不是cookie来响应。据我所知

当需要发送html文档正文时,如何在客户端通过身份验证后立即向客户端发送JWT而不使用cookie


这里有文档、博客文章和教程,解释了无cookie的jwt身份验证,并利用Web存储API来保存jwt客户端。但所有这些都是微不足道的例子,没有在http响应体中发送一个html文档来进行身份验证,这在我可以想象的一些实际应用程序中是必要的。cookie可以在cookie http响应头中与同一响应正文中的html文档一起发送,我还没有看到一篇文章解释如何使用jwt而不是cookie来响应。据我所知,如果要将jwt in响应头与响应正文中的html文档一起发送,浏览器中没有API可以从javascript访问响应头。

html文档通常从web应用程序中检索。Web应用程序受某种形式的保护

Web API通常受到显式身份验证的保护,JWT令牌在HTTP头(
授权
)中发送。这不是由浏览器自动完成的。您必须通过JavaScript显式地执行此操作

当然,您可以将JWT令牌存储在cookie中,并在每次请求时将其自动发送到服务器


另请参见。

HTML文档通常从web应用程序检索。Web应用程序受某种形式的保护

Web API通常受到显式身份验证的保护,JWT令牌在HTTP头(
授权
)中发送。这不是由浏览器自动完成的。您必须通过JavaScript显式地执行此操作

当然,您可以将JWT令牌存储在cookie中,并在每次请求时将其自动发送到服务器


另请参见。

我处境相同,我不知道如何在成功(或未成功)社交登录时向需要重定向的客户端发送JWT令牌。当您向用户提供登录名/密码并通过AJAX对自己的服务器进行身份验证时,事情很简单,但当您1)加载登录页面、2)重定向到OAuth提供者、3)回调到自己的服务器、4)发出自己的JWT令牌并。。。然后呢

有一个库从客户端提供OAuth支持。您根据Facebook/Google(无论什么)进行身份验证,以取回他们的令牌,然后向您自己的服务器发出AJAX请求以进行令牌验证。当令牌通过Facebook/Google(无论什么)验证后,您可以发布自己的JWT令牌,并将其作为响应(AJAX)发送到您的网页


这是和。

我在同一条船上,我不知道如何在成功(或不成功)社交登录时向需要重定向的客户端发送JWT令牌。当您向用户提供登录名/密码并通过AJAX对自己的服务器进行身份验证时,事情很简单,但当您1)加载登录页面、2)重定向到OAuth提供者、3)回调到自己的服务器、4)发出自己的JWT令牌并。。。然后呢

有一个库从客户端提供OAuth支持。您根据Facebook/Google(无论什么)进行身份验证,以取回他们的令牌,然后向您自己的服务器发出AJAX请求以进行令牌验证。当令牌通过Facebook/Google(无论什么)验证后,您可以发布自己的JWT令牌,并将其作为响应(AJAX)发送到您的网页


这是和。

我已经在我的项目中处理了您的场景,根据您使用的技术堆栈和环境约束,可以通过两种方式完成,并且使用OAuth不是强制性的

方法1

将嵌入在HTML页面中的JWT作为标记发送。它不会呈现在页面上,但可以由您解析。但是,它将在浏览器的源窗口中可见,但这并不重要,因为这将是一个受保护的页面,一旦呈现下一个页面,它将不可用

方法2

您可以在cookie中首次使用仅http约束发送JWT。通过https处理它将带来额外的优势。此外,如您所述,您可以删除cookie。 如果您在客户端使用AngularJS,您可以通过限制来自同一域的XHR来保护cookie,从而避免删除cookie的额外任务


事实上,@user981375提到了重定向,上面的方法1也可以处理重定向。在我的例子中,服务器在成功登录后提供了重定向URL,但是ajax将无法看到302头,而将看到200头。因此,我们在服务器上截获了该部分,并将令牌嵌入到200响应页面中,即客户端解析的重定向页面。

我在我的项目中处理了您的场景,可以通过两种方式完成,具体取决于您使用的技术堆栈和环境约束,并且使用OAuth不是强制性的

方法1

将嵌入在HTML页面中的JWT作为标记发送。它不会呈现在页面上,但可以由您解析。但是,它将在浏览器的源窗口中可见,但这并不重要,因为这将是一个受保护的页面,一旦呈现下一个页面,它将不可用

方法2

您可以在cookie中首次使用仅http约束发送JWT。通过https处理它将带来额外的优势。此外,如您所述,您可以删除cookie。 如果您在客户端使用AngularJS,您可以通过限制来自同一域的XHR来保护cookie,从而避免删除cookie的额外任务

事实上,@user981375提到了重定向,方法1 abov也可以处理重定向