这里列举几个经过验证的可用的cors使用示例,
方便在需要的时候可以直接使用
示例1
#region snippet2 public void configureservices(iservicecollection services) { services.addcors(options => { options.addpolicy(myallowspecificorigins, builder => { //1.可用 //builder.withorigins("http://example.com", // "http://www.contoso.com", // "http://localhost:65317"); builder.allowanyorigin(); //2.可用 }); }); services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2); } #endregion #region snippet3 public void configure(iapplicationbuilder app, ihostingenvironment env) { if (env.isdevelopment()) { app.usedeveloperexceptionpage(); } else { app.usehsts(); } app.usecors(myallowspecificorigins); app.usehttpsredirection(); app.usemvc(); } #endregion
这种比较常见,即在configureservices中添加中间件及定义其策略;而在configure中把中间件设置到管道中
示例2
public void configureservices(iservicecollection services) { //services.addcors(); //经试验,此句加或者不加,都是可以的 services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2); } #region snippet2 public void configure(iapplicationbuilder app, ihostingenvironment env) { if (env.isdevelopment()) { app.usedeveloperexceptionpage(); } else { app.usehsts(); } // shows usecors with corspolicybuilder. app.usecors(builder => { builder.withorigins("http://example.com", "http://www.contoso.com", "https://localhost:44375", "http://localhost:65317"); }); app.usehttpsredirection(); app.usemvc(); } #endregion
注意,这个示例中,直接在configure中的app.usecors中设置的跨域的一些要求,这种写法经试验也是可以的
示例3
public void configureservices(iservicecollection services) { services.addcors(options => { options.adddefaultpolicy( builder => { builder.withorigins("http://example.com", "http://www.contoso.com", "http://localhost:65317"); }); options.addpolicy("anotherpolicy", builder => { builder.withorigins("http://www.contoso.com", "http://localhost:65317") .allowanyheader() .allowanymethod(); }); }); services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2); } public void configure(iapplicationbuilder app, ihostingenvironment env) { if (env.isdevelopment()) { app.usedeveloperexceptionpage(); } else { app.usehsts(); } app.usehttpsredirection(); app.usemvc(); }
经试验发现,像这种没有在configure中使用app.usecors的,应该都属于局部设置跨域的,需要在相应的controller或者action方法上,使用注解:
//[enablecors("anotherpolicy")] //这种事有名称的策略的注解添加 [enablecors()] //这种是模式策略的注解添加 [route("api/[controller]")] [apicontroller] public class valuescontroller : controllerbase
注意,即使是默认的策略也是需要使用注解进行声明的,否则会跨域错误。默认的策略只是说不用在注解中声明策略名而已
黄山市民网:https://www.huangshanshimin.com/