请阐述在 ASP.NET Core 中配置跨域请求支持的具体步骤及注意事项。
考察说明
考察对 ASP.NET Core 跨域配置的理解与实际操作能力
回答思路
- 【回答框架 1】跨域是由于浏览器同源策略限制,不同源(协议、域名、端口任一不同)的请求会被拦截。在 ASP.NET Core 中,通过配置 CORS(跨源资源共享)中间件来允许特定来源访问。
- 【回答框架 2】首先在服务容器中调用 AddCors 方法,配置 CORS 策略,例如设置允许的来源、方法、请求头等,可通过策略名称或默认策略进行设置。
- 【回答框架 3】然后在请求管道中通过 UseCors 方法启用中间件,注意顺序,一般放在 UseRouting 之后、UseAuthorization 之前。
- 【回答框架 4】对于控制器或方法级别,可以应用 EnableCors 特性指定策略,也可以全局应用。
- 【回答框架 5】还需处理预检请求(OPTIONS),确保服务器正确响应,对于复杂请求(如携带自定义头或非简单方法),浏览器会先发送 OPTIONS 请求,需确保 CORS 配置包含 AllowHeaders 和 AllowMethods 相关内容。
- 【关键点 1】CORS 配置涉及服务注册 (AddCors) 和中间件启用 (UseCors)。
- 【关键点 2】可通过命名策略或默认策略配置允许的来源、方法、请求头。
- 【关键点 3】UseCors 应放置在 UseRouting 之后和 UseAuthorization 之前。
- 【关键点 4】可使用 EnableCors 特性对控制器或方法进行细粒度控制。
- 【关键点 5】需要正确处理预检请求,必要时配置 AllowCredentials 与 AllowAnyOrigin 不能同时使用。
- 【易错点 1】不能将 AllowAnyOrigin 与 AllowCredentials 同时使用,否则会导致配置失败。
- 【易错点 2】忽略预检请求,导致 OPTIONS 请求返回 405 或 401。
- 【易错点 3】中间件顺序错误,如将 UseCors 放在 UseRouting 之前,可能导致请求处理异常。