【发布时间】:2018-08-14 21:38:16
【问题描述】:
我遇到了一个奇怪的问题。我有一个在 Azure 应用服务(网站)下运行的 Asp.net Core WebApi 项目。我在 Chrome 中使用 DHC 插件。我的服务也使用 AAD 运行。
我可以请求一个 GET 方法就好了(登录后)。但是,当我请求任何 POST 时,我得到了 403 响应。在日志中环顾四周,我可以看到这个
2016-07-28T08:14:26 PID[x] 详细接收请求:POST https://blahblah.azurewebsites.net/api/build/beep/
2016-07-28T08:14:26 PID[x] Verbose 发现站点“blah.azurewebsites.net”的“AppServiceAuthSession”cookie。长度:856。
2016-07-28T08:14:26 PID[x] 信息发送响应:403.60 Forbidden
2016-07-28T08:14:26 PID[x] 警告检测到来自引用者“”的用户“blah@blahblah.com”的跨站点请求伪造!
我使用的是 Asp.net Core 1.0。我在我的代码(AllOrigin AllHeader)中启用了 CORS,并且 Azure 网站中的 CORS 有一个“*”条目,它应该接受每个来源。日志流似乎甚至没有访问我的网站,但 Azure 中的某些内容阻止了请求。
有什么帮助吗?
编辑: 一个成功的 GET 方法
2016-07-28T20:24:35 PID[22880] 详细接收请求:GET https://blah.azurewebsites.net/api/build/beep/
2016-07-28T20:24:35 PID[22880] 详细发现站点“blah.azurewebsites.net”的“AppServiceAuthSession”cookie。长度:876。
2016-07-28T20:24:36 PID[22880] Verbose Authenticated blah@blah.com 使用“会话 Cookie”身份验证成功。
【问题讨论】:
-
看起来你的 JavaScript 客户端被 Authentication / Authorization 模块的 CSRF 保护阻止了,它目前不知道 CORS 配置(它可能应该知道)。在您的场景中,您的最终用户最初是如何登录的?
-
我使用 chrome 对 AAD 和我的公司凭证进行身份验证。登录后,Azure 让 GET 请求顺利通过。我编辑了我的帖子以包含成功 GET 请求的日志。
-
这有什么更新吗?我也遇到了同样的问题,但 Chrome 有一个错误会阻止设置用户代理。
标签: azure cors azure-web-app-service