首页 > 解决方案 > 从 reactjs 到 asp.netCore api 的 PUT 请求的 CORS 问题

问题描述

我正在开发一个带有 Asp.netCore API 的 Reactjs 应用程序,并将 Sql 数据库部署到 IIS 服务器。除了 PUT 对因 CORS 错误而中断且请求未到达后端的任务进行操作外,所有操作均正常工作,我在本地对其进行了测试,并且工作正常。使用 Postman 进行测试,即使部署的版本与 postman 一起使用,它也可以正常工作。我不知道是什么问题,也不知道应该从哪里开始调试。

启动.cs

       public void ConfigureServices(IServiceCollection services)
       {
            services.AddCors(o => o.AddPolicy(name: CorsPolicy, builder =>
           {
               builder.WithOrigins(FrontEnd_URL).SetIsOriginAllowed((host) => 
               true).AllowAnyHeader().AllowAnyMethod().AllowCredentials();
           }));
       }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();

            app.UseCors(CorsPolicy);


            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapHub<TrelloHub>("/trello");

            });
        }

任务控制器

    [Route("/api/tasks")]
    [ApiController]
    public class TasksController : Controller
    {
        private readonly IMapper _mapper;
        private readonly ITaskService _taskService;

        public TasksController(ITaskService taskService , IMapper mapper)
        {
            _mapper = mapper;
            _taskService = taskService;
        }

        [HttpPut("{id:int}", Name = "UpdateTask")]
        public async Task<String> UpadateTask([FromBody]TaskDto taskdto, int id)
        {
            
            var taskModel = _mapper.Map<Task>(taskdto);
            return await _taskService.UpadateTask(id , taskModel);
        }
}

标签: sqlreactjsasp.net-coreiisreact-hooks

解决方案


首先检查 IIS 服务器日志。它可以帮助您很多,还可以origin: 准确查看 reactjs 客户端标头的请求标头并将其添加到允许的来源


推荐阅读