细节就是:你不注意,坑到连你妈都不认识,这就叫细节。
1 has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
2 net::ERR_FAILED
出现2 net::ERR_FAILED这个问题的原因:
1:前端域名配置错误
2:后端没有配置这个域名
解决:
确定当前接口请求和后端配置的域名一致,如果不一致,需要前端配置文件中改为和后端域名一致,如果项目中有使用多个域名的配置,除了主域名的接口之外,其他的域名接口需要单独代理调用,我当前的调用方式:
第一个是cors 注册
builder.Services.AddCors();
授权使用
app.UseCors(x => x.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
细致点 备注了很多坑
前端
后端
//添加跨域策略
builder.Services.AddCors(options =>
{
// 支持多个域名端口,注意端口号后不要带/斜杆:比如localhost:8000/,是错的
options.AddPolicy("CorsPolicy", policy => policy //.AllowAnyOrigin() //注释这个方法,不能与.AllowCredentials()一起用
.WithOrigins("http://127.0.0.1:3000", "http://localhost:3000",
"http://127.0.0.1:54004", "http://localhost:54004", tokenOptions.Audience,
"http://127.0.0.1:54005", "http://localhost:54005")
.AllowAnyHeader() //允许任何标头
.AllowAnyMethod()//允许任何方法 // .WithMethods("POST", "GET") //
.AllowCredentials() //添加这个方法 解决前端has been blocked by CoRS policy: The value of the
.WithExposedHeaders("X-Pagination")); //这是个前端要的个分页参数 网络上的文章都是抄来抄去 也不来个说明妈的这些搬运工
});
app.UseCors("CorsPolicy");//将 CORS 中间件添加到 web 应用程序管线中, 以允许跨域请求。
然后上线又出现各种奇葩问题 用IP 用域名 用多级域名试 都不行 奇葩的是居然有两次请求 。服务器内和服务器外的总管4次请求居然都提示不一样。。。NB吧。。。睡觉先。。。
请求方法:OPTIONS 都失败的
get 方法的
后端 AddCors 这个WithOrigins 配置了IP 域名都试过 本地前端可以
坑的是 直接输入URL在浏览器能访问