React 和 PUT Ajax PUT 请求上的 CORS 问题
Posted
技术标签:
【中文标题】React 和 PUT Ajax PUT 请求上的 CORS 问题【英文标题】:Problem with CORS on React and PUT Ajax PUT request 【发布时间】:2021-10-24 15:50:33 【问题描述】:我的应用有问题。我使用 Express/node 作为 API 并尝试使用 React 访问它,这在 Axios 上运行良好。
现在我尝试使用 DevExpress 网格组件来显示数据。获取数据工作正常,但如果我想编辑和保存,我总是会遇到 CORS 错误。
我的快递设置:
app.use(
cors(
origin: '*',
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
)
);
API 如下所示:
router.put('/dataToEdit', auth, (req, res) =>
MasterData.updateData(req, res);
);
如果我想调用并绑定到网格:
const dataSource = createStore(
key: 'helperboxTypeId',
loadUrl: `$url/getAlldataToEdit`,
insertUrl: `$url/dataToEdit`,
updateUrl: `$url/dataToEdit`,
deleteUrl: `$url/dataToEdit`,
onBeforeSend: (method, ajaxOptions) =>
ajaxOptions.headers =
'Content-Type': 'application/json',
'x-auth-token': localStorage.token,
;
ajaxOptions.crossDomain = true;
,
);
我尝试过,我认为所有可能的设置星座,在我问这个问题之前,我在几个论坛中搜索了大约 1 天 :) 也许有人正在使用相同的组件并且可以以某种方式提供帮助。 错误是:
Access to XMLHttpRequest at 'http://localhost:5000/api/masterData/dataToEdit' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
另一个解决方案可能是我在那里使用 Axios 但无法集成它。
非常感谢!
【问题讨论】:
您的代码顶部是否有关于 cors 的中间件?它先行吗? 您好,感谢您的评论帮助...我不知道为什么...找不到错误:D 【参考方案1】:终于找到了,感谢 cmets 让我大开眼界 :)
问题是我在后端 server.js 的顶部错过了我几周前添加的一行...
app.get('/', (req, res) => res.send(text.SERVER_API_RUNNING));
如果我添加 cors 设置,它似乎只适用于我的 API 的一部分。
【讨论】:
【参考方案2】:您应该允许 Access-Control-Allow-Origin 如下:
app.all('/*', function (req, res, next)
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
);
【讨论】:
以上是关于React 和 PUT Ajax PUT 请求上的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery .ajax() PUT 请求 API 不起作用
Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)
如何让 PUT 和 DELETE 动词与 IIS 上的 Web API 一起使用
让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求