我正在尝试使用React axios在drupal网站上更新一些文章。 GET和POST请求有效,但我无法使PATCH工作。通过邮递员发送PATCH请求工作得很好。我使用axios得到以下错误:
Access-Control-Allow-Methods中不允许使用方法PATCH 飞行前响应。
我做错了什么?
这是我的代码:
editState(nid, value){
let node = {
"type":[{"target_id":"article","target_type":"node_type"}],
"body":[{"value": value}]
}
let config = {
headers: { 'Content-Type': 'application/json' }
}
axios.patch('http://localhost:8888/d8restapi/node/' + nid + '?_format=json',node,config)
.then((success) => {
console.log(success);
}).catch((error) => {
console.log(error);
});
}
以下是我的OPTIONS请求标题:
编辑:使用Firefox测试它可以工作,但它在Chrome中不起作用!已经清空了缓存并重新启动并进行了重新加载,但无济于事。
编辑2:问题解决了。我在Chrome中安装了另一个CORS插件。以下工作以防任何人遇到与其他CORS插件相同的问题:
https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbc
答案 0 :(得分:1)
我经历过完全相同的事情。和你一样,只有react,axios和chrome的组合不起作用。
我通过将CORS chrome扩展名更改为此问题解决了这个问题: https://chrome.google.com/webstore/detail/access-control-allow-cred/hmcjjmkppmkpobeokkhgkecjlaobjldi
答案 1 :(得分:0)
我在无服务器和reactjs上也有类似的经验。首先,我认为问题出在无服务器的CORS配置上,但实际上我忘了把它放在
e.preventDefault()
提交表单时。结果,由于虽然未返回响应,但页面已加载,所以请求被取消。