我遇到一个问题,即我使用需要预检请求才能登录的Windows身份验证。但是,尽管我的启动文件中启用了CORS,但应用程序将无法执行预检" Allow-Access-Control -Origin"要求。
无法加载http://localhost:1190/api/test:对预检的响应 请求未通过访问控制检查:否 '访问控制允许来源'标题出现在请求的上 资源。起源' http://localhost:8080'因此是不允许的 访问。
我在localhost上运行SPA:8080
我有一个axios POST withCredentials
function identityLogin () {
const url = BASE_URL + 'api/token'
axios.get(url, {withCredentials: true}).then(response => {
if (response.statusText === 'OK') {
.....
} else {
....
}
})
.catch(error => {
console.log(error)
....
})
}
在我的startup.cs中我有
app.UseCors(builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
);
app.UseMvc();
然后,当我第一次获得Windows凭据时,之前的开发人员写了这个:
[HttpGet("api/token")]
[Authorize]
public async Task<IActionResult> Get()
{
this.Response.Headers.Add("Access-Control-Allow-Origin", "http://localhost:8080");
this.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type,Authorization");
this.Response.Headers.Add("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
this.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
.........
}
是否持久且可能会弄乱UseCORS?是否存储了cookie?
我想要的所有Windows凭据都是检查数据库,然后使用令牌进行响应。
**编辑** 我指定的结果具有相同的结果。
app.UseMvc();
app.UseCors(builder => builder
.WithOrigins("http://localhost:8080")
.AllowAnyMethod()
.AllowAnyHeader(
.AllowCredentials());
答案 0 :(得分:1)
startup.cs中的订单事项
app.UseCors
必须在app.UseMvc
之前:
app.UseCors(builder => builder
.WithOrigins("http://localhost:8080")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
app.UseMvc();