asp.net-web-api – Asp.Net核心WebAPI CORS无效
我正在尝试使用.Net Core实现WebAPI服务,我无法设置CORS正常工作.
我得到了主应用程序’MainApp’,它将动态生成Invoice,我想将其作为服务进行推广.这不是纯粹的WebAPI应用程序.我只想添加这个InvoiceController作为WebAPI,还有其他控制器,如HomeController,ProductsController等…带有视图和cshtml. 我得到了单独的Classic WebForm .Net Application,它将通过Ajax调用InvoiceGeneration Service并在网站上显示值. 当我运行我的ajax脚本时,我得到了这个着名的CORS错误. 这是我的ajax Get方法.我是否放xhrFields并不重要.我甚至改变了dataType:’jsonp’,它仍然给我同样的错误. $.ajax({ type: "GET",url: 'http://localhost:57012/invoice/test/123',dataType: 'json',contentType: 'application/json',success: function (data) { console.log(data); },xhrFields: { withCredentials: true } }); InvoiceController.cs 我的发票服务非常简单……只有一种方法可以返回一些JSON值. 由于我使用Policy和Claims来确定安全性,因此我将AllowAnonymous属性.即使我删除了这个限制,它仍然无法正常工作. public class InvoiceController : Controller { [HttpGet] [AllowAnonymous] [EnableCors("AllowAll")] public async Task<IActionResult> Test(string id) { return new JsonResult(id); } } Startup.cs 我添加了AllowAll Policy以允许所有类型的请求. public void ConfigureServices(IServiceCollection services) { services.AddDbContext<DbContexts.PJDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("PJConnection"))); services.AddSingleton<IHttpContextAccessor,HttpContextAccessor>(); services.AddMvc() .AddJsonOptions(o => o.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore) .AddJsonOptions(o => o.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver()); services.AddCors(options => options.AddPolicy("AllowAll",p => p.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials())); services.AddAuthorization(options => { options.AddPolicy(Constants.CONST_POLICY_SUPERADMIN,policy => policy.RequireRole(Constants.CONST_ROLE_SUPERADMIN)); options.AddPolicy(Constants.CONST_POLICY_STUDENT,policy => policy.RequireRole(Constants.CONST_ROLE_STUDENT,Constants.CONST_ROLE_ADMIN,Constants.CONST_ROLE_SUPERADMIN)); }); } public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory,IOptions<AppSettings> AppSettings) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); if (env.IsProduction()) { app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider(AppSettings.Value.FilePathToUpload),RequestPath = new PathString("/Files"),}); } app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationScheme = "Cookie",LoginPath = new PathString("/Account/Login/"),AccessDeniedPath = new PathString("/Account/Forbidden/"),AutomaticAuthenticate = true,AutomaticChallenge = true }); app.UseCors("AllowAll"); app.UseMvc(routes => { routes.MapRoute( name: "default",template: "{controller=Home}/{action=Index}/{id?}"); }); } 这是有趣的部分. 我创建了另一个新的.Net Core WebAPI项目,并将此CORS安装程序复制到Startup.cs和InvoiceController到新项目. CORS工作正常,我的AJAX可以从新项目中调用该方法. 但是我不想创建多个项目,我不能将WebAPI嵌入现有的MVC WebApp项目中吗? 我已经看到一些教程在同一个项目中同时运行WebAPI和MVC控制器(显然它们位于同一个域中.因此,CORS对他们来说不是问题).很混乱. 你能帮帮我吗? PS.这个Html5Rocks教程js脚本也不起作用. 在我看来,我认为JqueryAJAX脚本没有任何问题. $.ajax({ type: "GET",url: 'http://oakapi/staff/byid/2618',success: function (data) { console.log(data); } }); 解决方法
我认为service.AddCors()应该放在service.AddMvc()之前.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- modelstate – asp.net mvc没有实体框架
- asp.net-mvc – MVC中的绑定集合
- 如何使用IIS 6在asp.net中实现远期未来的过期标头
- asp.net – 如何在SQL4的log4net配置中使用存储过程进行日志
- asp.net – 指向同一页面的动作链接
- asp.net-mvc-4 – WepApi控制器是否应该返回viewmodels
- ASP.NET Core在支付宝小程序中使用signalR
- asp.net – Visual Studio 2015 Web应用程序.NET Core与.NE
- asp.net – 当内容页面位于子文件夹中时,jQuery无法在母版页
- [ASP NET MVC] 表单 Partial View / Editor Template 使用抉
- asp.net – 带有IE 11的ReportViewer 11:报告高
- 使用ASP.NET会话状态服务器(而不是InProc)的优点
- asp.net-mvc – 跨应用程序进行表单身份验证的Se
- asp.net – HttpCookie.Expire时区含义?
- asp.net-web-api – 为WCF REST和ASP.NET Web AP
- asp.net – 使用MVC 4的.NET 4.5数据访问应用程序
- asp.net – ActiveDirectoryMembershipProvider“
- asp.net – 如何确定服务器控件的客户端NAME?
- asp.net – 突然收到“无法向会话状态服务器发出
- asp.net-mvc – 生成的视图中的模型值错误