在php文件上启用了cors,但仍然出现错误

时间:2019-08-28 13:03:11

标签: php reactjs cors axios

出于培训目的,我正在构建一个API。我现在必须发送包含信息的POST请求。我使用的是React JS和PHP,问题在于每次我发送请求时,CORS错误仍会显示在浏览器上。

我发送POST的JS文件是我更改了URL,因为它在我的个人服务器上:

  axios.post('https://myurl/api/book/create.php', {
   data: JSON.stringify(values, 0, 2)
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

在服务器端,我有以下内容

<?php

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

有了邮递员,请求可以顺利进行,但是每次都通过浏览器发送

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://myurl/api/book/create.php. (Reason: CORS request did not succeed 

2 个答案:

答案 0 :(得分:0)

请确保您在后端服务器中允许CORS。然后,您需要像下面的示例一样为axios发送标头

axios.defaults.headers.post['Content-Type'] = 'application/json';
axios.defaults.withCredentials = true;
axios.defaults.crossDomain = true;

(或将其设置在数据后的第三个参数中)

答案 1 :(得分:-1)

对于所有请求,您都必须使用localhost127.0.0.1。通常,在您的代码中,您应该通过仅将URI附加到当前主机上来对服务器进行调用,而不必在URI字符串中重新添加主机和端口。

答案基于:CORS request did not succeed