以前学了点 Angular ,打算用 dotnet core 作后端,以前没接触过这方面的东西,理所固然的遇到了跨域问题,以后也解决了,因此在此作个记录后端
在使用 dotnet cli 生成的 angular 模板中跨域
大概有一段代码是这样写的 (若是 3.1 后面的版本没改动的话)app
angular 和 dotnet 同时启动,也必须同时结束cors
这个时候两个项目运行在同一个"域"下,大概是 localhost:5000
这种的ide
这样并不方便调试,dotnet 部分须要改动的时候,angular 也须要停掉visual-studio
因此 dotnet 相关文档 给出了一个解决方案ui
虽然方便了开发,可是以后大概就会出现一些跨域访问失败的问题了(反正不知怎么的,我就碰到这问题了)spa
主要修改 startup 中的代码3d
ConfigureServices
中添加如下代码调试
services.AddCors(options => { options.AddPolicy("随便起个名字", builder => builder.AllowAnyOrigin() .AllowAnyHeader().AllowAnyMethod()); });
而后在 Configure
中添加
app.UseCors("上面随便起的那个名字");
以后大概就能够了
若是有不一样的需求,能够添加不一样的跨域策略
services.AddCors(options => { options.AddPolicy("随便起个名字", builder => builder.AllowAnyOrigin() .AllowAnyHeader().AllowAnyMethod()) options.AddPolicy("随便起个名字#2", builder => builder.AllowAnyMethod()); });
而后在使用的时候本身选择就行了
当使用 AllowAnyOrigin
的时候,容许全部域,若是但愿可以指定域,可使用 WithOrigins
services.AddCors(options => { options.AddPolicy("angular", builder => builder.WithOrigins("http://localhost:4200","http://localhost:8080") .AllowAnyHeader().AllowAnyMethod()); });
因为angular默认用4200端口
写成这样大概就行了