Azure阻止从用户代理Mozilla/5.0到应用服务的POST请求

jw5wzhpr  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(113)

我的Azure应用服务具有基于Azure Active Directory的强制身份验证。它正在为API服务器和调用该服务器的Web应用提供服务。
所有的GET都能正常工作,但是POST都被403 Forbidden拒绝。Cookie被正确设置为通过身份验证检查。
奇怪的是,当我用Postman重放帖子时,他们成功了。我可以缩小导致拒绝的差异:
每当User-Agent标头为Mozilla/5.0
为什么Azure中会有这样的机制?如何去激活它?

nx7onnlm

nx7onnlm1#

在挖掘了这个建议之后,我可以验证这不是一个CORS问题,也不是一个需要更改的用户代理。
实际上,Chrome浏览器不支持用户代理更新,因为2022年6月6日,所以不能选择此选项。
解决方案的想法来自https://github.com/Azure/azure-functions-host/issues/1602#issuecomment-309532954
为了重点介绍修复,在App Service/Authentication中:
1.身份验证设置(编辑)
1.允许的外部重定向URL:添加https://{name}.azurewebsites.net

此后,POST请求正常工作。

rsl1atfo

rsl1atfo2#

我在一个非跨源场景中遇到了同样的问题,但对我来说,Benjam's answer不起作用,因为(后来发现)浏览器既不发送源(实际上发送了null)也不发送引用头-因此没有任何东西与重定向URL匹配。
我建议检查并评估Benjam回答中提到的线程中列出的所有CSRF规则。
在我的例子中,问题是Referrer-Policy: no-referrer setting使浏览器忽略了引用头。在放宽策略后,POST请求通过了。

相关问题