我使用Spring Boot和Spring Security以及Cors支持.
如果我执行以下代码
url = 'http://localhost:5000/api/token'
xmlhttp = new XMLHttpRequest
xmlhttp.onreadystatechange = ->
if xmlhttp.readyState is 4
console.log xmlhttp.status
xmlhttp.open "GET", url, true
# xmlhttp.setRequestHeader "X-Requested-With", "XMLHttpRequest"
xmlhttp.setRequestHeader 'Authorization', 'Basic ' + btoa 'a:a'
do xmlhttp.send
Run Code Online (Sandbox Code Playgroud)
我得到了结果
200
Run Code Online (Sandbox Code Playgroud)
如果我测试错误的凭据,如
url = 'http://localhost:5000/api/token'
xmlhttp = new XMLHttpRequest
xmlhttp.onreadystatechange = ->
if xmlhttp.readyState is 4
console.log xmlhttp.status
xmlhttp.open "GET", url, true
# xmlhttp.setRequestHeader "X-Requested-With", "XMLHttpRequest"
xmlhttp.setRequestHeader 'Authorization', 'Basic ' + btoa 'a:aa'
do xmlhttp.send
Run Code Online (Sandbox Code Playgroud)
而不是获得401(这是春季安全中错误身份验证的标准代码),我得到了
0
Run Code Online (Sandbox Code Playgroud)
以下浏览器通知:
获取http:// localhost:5000/api/token
XMLHttpRequest无法加载 …
我们有以下设置:
Front end code : REACT (Hosted using express js) (lets call this www.domainA.com)
Backend : .NET WEB API (Hosted in IIS 7.5) (lets call this www.domainB.com)
Run Code Online (Sandbox Code Playgroud)
FE应用程序的域正在向Web api发出GET数据和POST数据的请求.
GET工作正常,但每当我尝试将数据发布到Web API时,它都会抛出以下错误:
Request URL: http://www.domainB.com/api/postdataoperation
Request Method: OPTIONS
Status Code: 403 Forbidden
Run Code Online (Sandbox Code Playgroud)
我查看了许多CORS文章并继续在IIS中设置HTTPResponseHeaders,如下所示:
Access-Control-Allow-Methods : POST,GET,OPTIONS,PUT,DELETE
Access-Control-Allow-Origin : http://www.domainA.com
Run Code Online (Sandbox Code Playgroud)
反应解决方案的发布请求如下:
axios.post(`http://www.domainB.com/api/postdataoperation`, {userId});
Run Code Online (Sandbox Code Playgroud)