sql - 从 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);
}
}
解决方案
首先检查 IIS 服务器日志。它可以帮助您很多,还可以origin:
准确查看 reactjs 客户端标头的请求标头并将其添加到允许的来源
推荐阅读
- continuous-integration - 使用 nuxt generate 在 gitlab 管道中获取媒体
- python - 结合 Selenium-Wire 和 Selenium-Requests
- laravel - 无法从 eloquent 关系中获取数据
- kubernetes - 为什么要在 Kubernetes 中挂载 secret 或 configmap
- azure-devops - 在 Azure DevOps Server 2020 中,是否可以防止 Checkout 任务每次都具有不同的名称?
- excel - 使用 Java selenium,我想选择 excel 工作表行 [sA1 到 B4] 并将其粘贴到浏览器中
- javascript - 如何正确地将数据传递给映射方法
- javascript - FirebaseError:使用无效数据调用的函数 addDoc()。不支持的字段值:一个函数(在文档消息/jam5Xj1DryC4Xc 的字段 id 中找到)
- scala - Scala/Chisel 要连接的数据必须是硬件,而不是裸凿类型
- python - 带有 bin 标签的 NumPy 的 TH2D 对象