Asp.net core 将ASP.NET核心部署到IIS UI,并将API部署到单独的网站
具有包含UI和API的解决方案 UI 是一个Asp.net core 将ASP.NET核心部署到IIS UI,并将API部署到单独的网站,asp.net-core,cors,axios,Asp.net Core,Cors,Axios,具有包含UI和API的解决方案 UI 是一个ASP.NET核心MVC项目,它只包含一个HomeController和Index视图,加载到VueJS应用程序中 API 是一个ASP.NET核心Web API,用于使用Windows身份验证为VueJS应用程序提供数据 部署 当前设置(1个IIS网站) 我们有一个origin(),通过它访问API 新设置(2个IIS网站) 对于UI和API我们有两个来源() 对于新的设置,我们需要实现CORS(跨源),以允许其他网站使用API。但是,因此我
ASP.NET核心MVC
项目,它只包含一个HomeController
和Index
视图,加载到VueJS
应用程序中
API
是一个ASP.NET核心Web API
,用于使用Windows身份验证为VueJS应用程序提供数据
部署
- 当前设置(1个IIS网站)
- 新设置(2个IIS网站)
UI
和API
我们有两个来源()
对于新的设置,我们需要实现CORS(跨源),以允许其他网站使用API。但是,因此我们需要为选项
飞行前请求启用匿名身份验证
有没有办法防止这种情况发生?通过使用自定义中间件进行身份验证来解决此问题:
public async Task InvokeAsync(HttpContext context)
{
// Check if the request is a PREFLIGHT => OPTIONS request
if (context.User.Identity.IsAuthenticated || context.Request.Method == "OPTIONS")
{
await _next(context);
return;
}
await context.ChallengeAsync("Windows");
}
在启动时,在管道的开头添加:
app.UseMiddleware<AuthenticationMiddleware>();
app.UseMiddleware();
这应该会有帮助。@aguafrommars我做了所有这些,但为了让它工作,我需要将匿名身份验证设置为true,以允许来自CORS的选项reguests。问题是要确保它的安全性,或者是否有其他解决方案来禁用匿名身份验证,但让CORS在IIS上工作?或者使用ASP.Net核心身份验证和授权中间件?无法避免需要允许未经身份验证的选项请求。CORS协议需要它。更具体地说,CORS协议要求浏览器忽略CORS飞行前选项请求中的所有凭证。