【问题标题】:Cors enabled on php file, but still getting error在 php 文件上启用了 Cors,但仍然出现错误
【发布时间】:2020-01-01 17:20:59
【问题描述】:

我正在构建一个 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 

【问题讨论】:

    标签: php reactjs cors axios


    【解决方案1】:

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

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

    (或者设置在数据后面的第三个参数中)

    【讨论】:

    • "跨域请求被阻止:同源策略不允许读取位于 'myurl/book/livro/create.php' 的远程资源。(原因:如果 CORS 标头为 'Access-Control-Allow-Origin,则不支持凭据' 是 '*')" 在我的服务器上启用。
    • @ZephSenpai 请允许Access-Control-Allow-Credentials
    • @ZephSenpai 您不能使用*,当凭据与请求一起发送时,您必须使用Origin 请求标头的确切内容进行响应。
    • @misorude 你能解释一下吗?
    • @ZephSenpai 当您发出包含凭据的请求时,远程服务器需要以 Access-Control-Allow-Origin: http://localhost/(或任何您的实际来源)进行响应。
    【解决方案2】:

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

    答案基于:CORS request did not succeed

    【讨论】:

    • 我从本地主机发送请求。另一方面,服务器在线,我只是将它用于数据库。
    猜你喜欢
    • 2021-03-01
    • 2017-04-29
    • 2021-09-21
    • 2020-06-22
    • 2019-11-29
    • 2021-03-28
    • 2021-09-14
    • 2019-04-16
    • 2016-03-21
    相关资源
    最近更新 更多