使用基本身份验证重定向到另一个网站(在节点中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用基本身份验证重定向到另一个网站(在节点中)相关的知识,希望对你有一定的参考价值。

如何使用基本身份验证重定向到另一个网站(在节点中)

这是我的代码

const headers = {
  Authorization: "Basic " + 
  new Buffer(USER + ":" + PASS).toString("base64")
};

ctx.response.set(headers);
ctx.response.redirect(URL)

第一个响应返回基本身份验证

Authorization →Basic QWRxXxXxYWRtaW4=
Connection →keep-alive
Content-Length →111
Content-Type →text/html; charset=utf-8
Date →Fri, 15 Dec 2017 21:49:57 GMT
Location →http://localhost:8080/edit/data/P0000013

以下重定向的GET请求不包含基本身份验证并再次重定向到登录页面。

# General
Request URL:http://localhost:8080/edit/data/P0000013
Request Method:GET
Status Code:302 Found
Remote Address:[::1]:8080
Referrer Policy:no-referrer-when-downgrade

# Request Header
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.9
Connection:keep-alive
Cookie:....
Host:localhost:8080
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
答案

您可以指定用户名和密码作为URL的一部分:

ctx.redirect('http://username:password@example.com');
另一答案
  1. 您无法使用附加标头重定向(包括基本身份验证),HTTP协议不支持它。
  2. 但是您可以将基本身份验证密钥/值对作为参数放在新URL中: 找到HTTP / 1.x 302 位置:/ api?auth = asdf
  3. 或者将其保存在cookie中 找到HTTP / 1.x 302 位置:/ api Set-Cookie:auth = asdf

以上是关于使用基本身份验证重定向到另一个网站(在节点中)的主要内容,如果未能解决你的问题,请参考以下文章

KeyCloak 在身份验证代码流错误后重定向回身份提供者

UIWebView 中的 Facebook 身份验证不会重定向回我网站上要求身份验证的原始页面

如何在通过 Redux 操作进行身份验证后重定向用户?

将 HTTP 重定向到 HTTPS 在基本身份验证中的关键作用是啥?

Vue.js 路由在身份验证检查后重定向之前短暂显示 404 错误消息

验证注册表中的数据后,重定向到另一个页面以登录