【发布时间】:2017-07-14 15:26:24
【问题描述】:
我正在使用 MS Azure 开发一个 Web 应用程序。后端是 JAVA/Spring 应用,前端是 Javascript/Angular 开发,但我觉得不相关。 我的问题是来自我前面的经过身份验证的 POST 请求被 azure XSRF 保护阻止,我找不到任何有关它的信息。为了清楚起见,未经身份验证的请求以及经过身份验证的 GET 请求都可以顺利通过。但是,任何经过身份验证的 POST 都会生成类似于以下内容的日志:
2017-02-23T22:44:46 PID[2668] Verbose Received request: POST https://immosearchapi.azurewebsites.net/profile
2017-02-23T22:44:46 PID[2668] Verbose Found 'AppServiceAuthSession' cookie for site 'immosearchapi.azurewebsites.net'. Length: 556.
2017-02-23T22:44:46 PID[2668] Information Sending response: 403.60 Forbidden
2017-02-23T22:44:46 PID[2668] Warning Cross-site request forgery detected for user 'contact@arimaz.com' from referer 'immosearchweb.azurewebsites.net'!
我找到了这个回复: Azure website Rest Api only accept GET, POST returns 403. Possibly CORS
这实际上是一种可能的解决方法,因为更改 Use-Agent 标头会有效地禁用此请求的 XSRF 保护。
但是...在 Chrome 上无法更改用户代理,这在我的情况下是不可接受的。
那么有没有办法完全禁用 Azure 后端的 XSRF(因为在这个阶段安全并不是真正的问题)?
或者我在哪里可以找到有关预期 cookie 和/或请求被接受的标头的文档?
提前谢谢你...
更新: 这并不是我自己问题的真正答案,但作为更新,我针对此问题的解决方法是将项目架构更改为单服务器方法。我更新了我的 Spring 应用程序以服务于前端以及 Rest API,以避免 Azure 出现 CORS 和 XSRF 问题。我一直无法使 ADAL 工作,而且它似乎只支持 MS 帐户,无论如何这对我来说不是一个解决方案。
【问题讨论】: