You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

POST请求正常但PUT请求触发CORS跨域错误如何解决

问题原因

你的POST请求属于CORS简单请求范畴,满足简单请求条件的请求不会触发预检流程,只要后端响应头加了Access-Control-Allow-Origin就能正常执行,和你当前的表现一致。
而PUT属于非简单请求,浏览器会先发送OPTIONS预检请求,确认后端允许跨域使用PUT方法、允许对应请求头之后,才会发送实际的PUT请求。你当前的问题根源是后端API没有正确处理OPTIONS预检请求,或者CORS配置中没有允许PUT方法,才会触发CORS报错。你之前尝试的前端层面改no-cors模式、安装CORS浏览器扩展都无法解决本质问题。

解决方案

所有操作都在你的后端API服务上配置,前端不需要修改CORS相关逻辑:

  • 首先在CORS配置的允许方法列表里加上PUT(如果你后续要把删除逻辑改成符合REST规范的DELETE方法,也要对应加上DELETE),不要只配置GET、POST两个方法
  • 单独处理OPTIONS类型的请求:所有路由收到OPTIONS请求时,直接返回包含以下响应头的200/204响应,不要走业务校验逻辑:
    Access-Control-Allow-Origin: 你的前端域名(开发环境可以临时写*方便调试)
    Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
    Access-Control-Allow-Headers: Content-Type, Accept
    Access-Control-Max-Age: 86400
    
  • 实际业务请求(PUT/POST/GET等)的响应头也要带上Access-Control-Allow-Origin,取值和你的前端域名匹配
前端优化建议(可选)

按RESTful API规范,删除资源应该使用DELETE方法而非PUT,你可以根据自己后端的路由设计调整,调整后记得同步更新后端CORS配置里的允许方法列表即可。

内容的提问来源于stack exchange,提问作者abrush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:06:09