HTML Post 表单的身份验证标头

Posted

技术标签:

【中文标题】HTML Post 表单的身份验证标头【英文标题】:Authentication Header for HTML Post form 【发布时间】:2021-10-24 18:44:02 【问题描述】:

是否可以从标准 html 解析/添加对提交的身份验证?例如。我正在使用 oAuth 对登录用户进行身份验证,并且有一个用例,我需要使用具有操作和方法属性的标准 HTML 表单。但我似乎找不到解析我用于身份验证的 JWT 令牌的方法。这可能吗?

提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用 JQuery 表单提交来发送授权标头

var form = $('#form-id').get(0); 
var formData = new FormData(form);

var xhr = new XMLHttpRequest();
xhr.open("POST", "url");
xhr.setRequestHeader("Authorization", "jwt token");
xhr.send(formData);

【讨论】:

【参考方案2】:

不,您不能使用常规的 HTML 表单来执行此操作。如果您需要在请求中添加 Authorization 标头,您唯一能做的就是从 javascript 发出请求(如 Subhashis 的答案所示)。它不一定是 jQuery,你可以使用纯 JS 和 fetch 或一些库来进行 http 调用(例如 axios)。无论你使用哪个,记住这将是一个 AJAX 调用,所以你的 JS 必须正确处理响应(响应不会被浏览器自动处理)。

【讨论】:

谢谢。我尝试过使用 nativa JS fetch,但是在 POST 请求中,这在 safari 浏览器中不起作用……或者至少在 iPhone 上不起作用。不过,它在 chrome/firefox 上运行良好。因此,使用 fetch 设置身份验证标头在某些浏览器中可以正常工作,但似乎并非如此。你有这方面的经验吗? 您可以在 caniuse.com 上查看可以在浏览器中使用的功能,例如fetch: caniuse.com/?search=fetch 似乎 fetch 也应该在 iPhone 上工作。这一定是 Safari 的一些其他问题。

以上是关于HTML Post 表单的身份验证标头的主要内容,如果未能解决你的问题,请参考以下文章

使用 ASP.NET Core 在 POST 请求的标头中包含身份验证

使用基于表单的身份验证时,http 服务器应在 401 响应中返回啥 WWW-Authenticate 标头?

不同“接受”内容类型标头字段的不同身份验证

Orbeon 标头身份验证

如何将基本身份验证标头分配给 XMLHTTPREQUEST?

Invoke-RestMethod:发送到标头时找不到请求的身份验证数据