如何在 GET 方法的 HTML 形式中设置授权标头
P粉617237727
2023-08-31 12:21:27
<p>我想向服务器提交一个 HTML 表单,该服务器接受 <code>queryString</code> 中的表单数据以及授权标头。然后,服务器在对数据和授权标头执行一些计算后发回 HTML 文档。</p>
<h1>限制</h1>
<ol>
<li>我无法使用 AJAX 或 fetch 等 JavaScript 功能,因为表单提交会获取需要在浏览器上打开的 HTML 响应。</li>
<li>由于内部原因,该表单还需要采用 <code>GET</code> 方法。</li>
</ol>
<h1>响应</h1>
<p>收到的响应是一个 HTML 文档,其中包含 JavaScript,其中包含 <code>sessionStorage.setItem('data', 'value')</code>,其范围仅限于源。该表单存在于 <em>parent.example.com</em> 源中,而接收到的 HTML 文档位于 <em>child.example.com</em> 源中。因此,我们必须像 HTML 表单重定向一样转到 <em>child.example.com</em> 页面。</p>
客户端代码无法执行此操作。
最接近的方法是让服务器以
401 Unauthorized
状态和WWW-Authenticate: Basic
标头响应请求,这会导致浏览器使用其本机 UI 提示用户输入凭据,并在用户输入凭据后,使用基本身份验证的格式重复请求并添加授权
。正如 Phil 在评论中提到的那样,听起来您想要请求的 URL 确实不是为浏览器直接导航而设计的。
与其尝试解决这个问题,您可能最好将身份验证系统更改为其他系统(例如为响应传统登录表单的提交而设置的 cookie)