我的Azure应用服务具有基于Azure Active Directory的强制身份验证。它正在为API服务器和调用该服务器的Web应用提供服务。所有的GET都能正常工作,但是POST都被403 Forbidden拒绝。Cookie被正确设置为通过身份验证检查。奇怪的是,当我用Postman重放帖子时,他们成功了。我可以缩小导致拒绝的差异:每当User-Agent标头为Mozilla/5.0时为什么Azure中会有这样的机制?如何去激活它?
403 Forbidden
User-Agent
Mozilla/5.0
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
App Service
Authentication
https://{name}.azurewebsites.net
此后,POST请求正常工作。
rsl1atfo2#
我在一个非跨源场景中遇到了同样的问题,但对我来说,Benjam's answer不起作用,因为(后来发现)浏览器既不发送源(实际上发送了null)也不发送引用头-因此没有任何东西与重定向URL匹配。我建议检查并评估Benjam回答中提到的线程中列出的所有CSRF规则。在我的例子中,问题是Referrer-Policy: no-referrer setting使浏览器忽略了引用头。在放宽策略后,POST请求通过了。
null
Referrer-Policy: no-referrer
2条答案
按热度按时间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请求正常工作。
rsl1atfo2#
我在一个非跨源场景中遇到了同样的问题,但对我来说,Benjam's answer不起作用,因为(后来发现)浏览器既不发送源(实际上发送了
null
)也不发送引用头-因此没有任何东西与重定向URL匹配。我建议检查并评估Benjam回答中提到的线程中列出的所有CSRF规则。
在我的例子中,问题是
Referrer-Policy: no-referrer
setting使浏览器忽略了引用头。在放宽策略后,POST请求通过了。