当前位置: 首页 > 知识库问答 >
问题:

无法使用fetch:React发送POST数据

南宫才艺
2023-03-14

我正在尝试使用react中的javascript fetch API将POST数据发送到另一个上的PHP脚本。我有一个CORS策略错误,如下所示:

为了解决上述问题,我在PHP脚本中添加了以下两行代码:

header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: GET, POST, PUT');

但我仍然无法解决我的问题。未发送POST数据。

JS代码:

fetch('http://localhost/articles-mania/publish.php', {
    method: 'POST',
    body: data,  // JSON Object 
    headers : { 
        'Content-Type': 'application/json'
    }
})
.then((res) => res.json())
.then((response) => {
    this.setState({
      responseMsg: response.msg
    })
})

PHP脚本:

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: GET, POST, PUT');

$title = $_POST['article_title'];
echo json_encode(array('msg' => $title));

有什么想法吗?


共有2个答案

华章横
2023-03-14

我刚刚遇到了一个类似的问题,似乎我所有的CORS设置都已正确就位。对我有效的方法是向要传递到body参数中的对象添加一个JSON.stringify()。

例如。

fetch('http://localhost/articles-mania/publish.php', {
    method: 'POST',
    body: JSON.stringify(data),  // JSON Object 
    headers : { 
        'Content-Type': 'application/json'
    }
})
.then((res) => res.json())
.then((response) => {
    this.setState({
      responseMsg: response.msg
    })
})
徐昆
2023-03-14

也许可以尝试允许用于执行飞行前请求的OPTIONS方法...

更改此项:

header('Access-Control-Allow-Methods:GET、POST、PUT')

为此:

header('Access-Control-Allow-Methods:GET、POST、PUT、OPTIONS')

 类似资料:
  • 我正试图根据以下代码发出post请求: 在Postman,此请求工作正常,不需要身份验证,无需登录名、密码或令牌即可工作。但是,上面的代码不起作用。 日志控制台的一部分如下: 我无法粘贴整个stacktrace,因为stackoverflow平台不允许。

  • 这是我的控制器: 这是我的配置: 这是类别类: 如果我尝试发送内容类型为application/json和以下正文的post请求: {“id”:8,“title”:“Паа”、“engTitle”:“Pizza”、“description”:null,“menuItems”:[{“id”:4,“title”:“Паааааааааааа”和“engTitle”:“Pepperoni”、“price

  • 问题内容: 我想使用JavaScript中的XMLHttpRequest发送一些数据。 说我的HTML形式如下: 如何在JavaScript中使用XMLHttpRequest编写等效项? 问题答案: 下面的代码演示了如何执行此操作。

  • 目前,我只得到了500个错误响应。

  • 无法使用改型2.0在api数据中发送原始数据 MyInterface: 有人能推荐一种解决方案,使用在api中发送原始数据吗?我对改型还不熟悉;当我在方法中得到响应时,请提供帮助。

  • 问题内容: 我需要发送这个XML 到SMS网关服务。该服务侦听HTTP POST请求。XML必须嵌入POST请求的BODY中。 我使用的是PHP和CodeIgniter框架,但是我总共使用的是PHP n00b,因此理想情况下,我需要一份详尽的指南,但是任何朝着正确方向的指针都将不胜感激。 问题答案: 您可以使用cURL库发布数据:http : //www.php.net/curl postfiel