我正在开发使用MS Azure的Web应用程序。后端是一个JAVA/Spring应用程序,前面是一个Javascript/Angular开发,但我不认为它是相关的。 我的问题是来自我前端的经过身份验证的POST请求被Azure XSRF保护阻止,并且我找不到任何有关它的信息。为了说清楚,未经身份验证的请求正在通过,没有问题,以及经过身份验证的GET请求。但是任何身份验证POST将产生类似日志:如何使用Azure Web应用程序的XSRF保护
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 '[email protected]' from referer 'immosearchweb.azurewebsites.net'!
我发现这个答复: Azure website Rest Api only accept GET, POST returns 403. Possibly CORS
这实际上是一个可行的解决方法是改变使用代理有效头禁用此要求XSRF保护。
但是...更改用户代理是不可能在Chrome上,这在我的情况是不可接受的。
那么是否有一种方法可以完全禁用Azure后端的XSRF(因为安全性在这个阶段并不是真正的问题)?
或者我可以在哪里找到关于接受请求的预期cookie和/或标题的文档?
预先感谢您...
更新: 这是不是一个真正的答案我自己的问题,但作为一个更新,我对这个问题的解决方法已到项目架构更改为单服务器方法。我更新了我的Spring应用程序以服务于前端以及Rest API,以避免Azure出现CORS和XSRF问题。我从来没有能够使ADAL工作,它似乎只支持MS帐户,这对我来说不是一个解决方案。
认证显然是问题的根本原因。我设法为js工作获得ADAL,但我无法弄清楚如何向我的后端API发出经过验证的请求(Azure身份验证**真是令人迷惑)。所以基本上它不能解决我的问题,我仍然得到403响应。无论如何,您是否有关于选项2的任何信息?试图在没有ADAL的情况下生成经过身份验证的请求? –