axios补丁不能用于chrome

时间:2017-11-03 19:28:28

标签: reactjs axios

我正在尝试使用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请求标题:

  • 请求网址:http://localhost:8888/d8restapi/node/16?_format=json
  • 请求方法:选项
  • 状态代码:200 OK
  • 远程地址:[:: 1]:8888
  • 推荐人政策:no-referrer-when-downgrade
  • 响应标题
  • 查看来源
  • 允许:GET,POST,DELETE,PATCH
  • 缓存控制:必须重新验证,无缓存,私有
  • 连接:保持活动
  • 内容语言:EN
  • 的Content-Length:0
  • 内容类型:应用/ JSON
  • 日期:2017年11月3日星期五21:08:24 GMT
  • Expires:Sun,1978年11月19日05:00:00 GMT
  • Keep-Alive:timeout = 5,max = 98
  • 服务器:Apache / 2.2.31(Unix)mod_wsgi / 3.5 Python / 2.7.12 PHP / 7.0.10
  • mod_ssl / 2.2.31 OpenSSL / 1.0.2h DAV / 2 mod_fastcgi / 2.4.6 mod_perl / 2.0.9
  • 的Perl / v5.24.0
  • X-的Content-Type-选项:nosniff
  • X-的Content-Type-选项:nosniff
  • X框-选项:SAMEORIGIN
  • X-Generator:Drupal 8(https://www.drupal.org
  • X-已启动通过:PHP / 7.0.10
  • X-UA-兼容:IE =边缘
  • 请求标题
  • 查看来源
  • 接受: /
  • 接受编码:gzip,deflate,br
  • 接受语言:烯,烯-US; Q = 0.8,SV; Q = 0.6,网络连接; Q = 0.4
  • 访问控制请求报头:内容类型
  • 访问控制请求-方法:PATCH
  • 连接:保活
  • 主机:本地主机:8888
  • 产地:http://evil.com/
  • 的Referer:http://localhost:3000/
  • User-Agent:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_12_6)
  • AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 61.0.3163.100 Safari浏览器/ 537.36
  • 查询字符串参数
  • 查看来源
  • 查看网址编码
  • _format:JSON

编辑:使用Firefox测试它可以工作,但它在Chrome中不起作用!已经清空了缓存并重新启动并进行了重新加载,但无济于事。

编辑2:问题解决了。我在Chrome中安装了另一个CORS插件。以下工作以防任何人遇到与其他CORS插件相同的问题:

https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbc

2 个答案:

答案 0 :(得分:1)

我经历过完全相同的事情。和你一样,只有react,axios和chrome的组合不起作用。

我通过将CORS chrome扩展名更改为此问题解决了这个问题: https://chrome.google.com/webstore/detail/access-control-allow-cred/hmcjjmkppmkpobeokkhgkecjlaobjldi

答案 1 :(得分:0)

我在无服务器和reactjs上也有类似的经验。首先,我认为问题出在无服务器的CORS配置上,但实际上我忘了把它放在

e.preventDefault()

提交表单时。结果,由于虽然未返回响应,但页面已加载,所以请求被取消。