最近做一个后台管理系统,但是期间遇到了跨域的问题,所以在此记录一下。这些问题都是很初级的基础知识。
后台配置需要先配置指定域名跨域,这也是为了防止安全。
一、关于netcore webapi 跨域配置
在Startup.cs文件中,找到 ConfigureServices(IServiceCollection services) ,添加如下代码:
services.AddCors(options => { options.AddPolicy("CustomCorsPolicy", policy => { // 设定允许跨域的来源,有多个可以用','隔开 policy.WithOrigins("http://127.0.0.1:8080") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });
如果是多域名,可以在这个 policy.WithOrigins("http://127.0.0.1:8080,http://127.0.0.1:8081")。
记住,不能在域名最后面带斜杠,如:policy.WithOrigins("http://127.0.0.1:8080/,http://127.0.0.1:8081/"),
这样写的话没效果的。
接着,在
Configure(IApplicationBuilder app, IWebHostEnvironment env)增加如下代码: app.UseCors("CustomCorsPolicy"); ,
这个必须在 app.UseRouting(); 和 app.UseEndpoints 之间,否则可能会失败。后端配置完了,接着前端就可以直接访问。
二、经常遇到的问题
在跨域调试中,我经常遇到最多的提示代码是415错误和404的错误,是因为什么,最主要是因为传递的接口参数,所以这一块还是需要多了解,比如,如果是Get请求,参数需要附带Getdymine([FromQuery] LoginModel model) 或者 GetDemo([FromQuery]string value),如此参数才能序列化正常。
另外,前端记得增加Content-Type类型,不然,一样是报错。