html - 当使用 aqueduct 时,oauth 适合授权访问 html 页面
问题描述
我正在使用 Aqueduct 提供HTML页面,我希望访问页面的授权能够正常工作,而无需为每个链接手动设置带有 javascript 的授权标头。这是怎么做到的?
我认为可能的唯一方法是使用 cookie。我尝试将 OAuth Bearer 令牌放入 cookie 中,以便它随每个请求一起发送,但我试图将其从 cookie 偷偷带回请求标头(服务器端的标准授权方期望它)作为请求时卡住了标头是不可变的。
我是否必须编写新的授权方才能使用 cookie 中的令牌?我已经读过根本不应该将 cookie 与 OAuth 一起使用。那么该怎么做呢?当然,我错过了一些东西,因为这似乎是一种常见的需求。
另一个想法(仍然使用 cookie)是从服务器的 cookie 中提取令牌,并将请求转发回具有正确授权标头的(同一)服务器。
什么是渡槽网页授权最好的处理方式?
解决方案
授权需要在标头中发送,并且浏览器不会为我执行此操作,除非不推荐使用 cookie。我想出的答案是应该检索 html 页面(减去内容),并使用 js 使用授权请求网页的内容,并在请求中包含授权标头。
我前进的道路是替换整个网页,因为我不想改变大部分工作。所以在一个包装器html页面中我这样做:
var uri = NEWURI;
var xhr = new XMLHttpRequest();
xhr.open('GET', uri);
xhr.onreadystatechange = handler;
xhr.responseType = 'text';
var authorization = localStorage.getItem("authorization"); // setup by by login page
if (authorization != null)
{
xhr.setRequestHeader('Authorization', authorization);
}
xhr.send();
然后在处理程序中我写了文件:
if (this.readyState === this.DONE) {
if (this.status === 200) {
var newHTML = document.open("text/html", "replace");
newHTML.write(this.response);
newHTML.close();
} else if (this.status === 401)
{
}
推荐阅读
- prolog - PROLOG 堆栈溢出递归乘法
- c - 如何从文本文件中分离二进制字符串并将它们存储在一维或二维字符数组中?
- assembly - LLDB 无法显示汇编源代码
- python - openCV python Find contours based on Edges Problem
- c# - 上标到 PDF 文档
- azure-ad-graph-api - Teams GraphAPI 的返回值顺序
- html - 脚本标签可以出现在标题和元标签之前吗?
- java - One Simulator 中的元组数据结构
- xml - 在 Kotlin 和 React 中使用图像
- assembly - ARM 左移或算术右移取决于移位计数的符号以有效乘以 2 的任何幂