【问题标题】:''Access-Control-Allow-Origin' header is present on the requested resource''Access-Control-Allow-Origin' 标头出现在请求的资源上
【发布时间】:2021-04-13 23:42:30
【问题描述】:

我正在尝试将 React.js 中的数据发布到本地主机 insert.php 文件。当我从 reactjs 提交表单时,它在控制台上出现错误错误是:

  1. 从源“http://localhost:3000”访问“http://localhost/reactphpdemo/connect.php”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
  1. xhr.js:177 POST http://localhost/reactphpdemo/connect.php net::ERR_FAILED
  2. createError.js:16 Uncaught (in promise) 错误:createError (createError.js:16) 处的网络错误 XMLHttpRequest.handleError (xhr.js:84)

这是我的代码

import React, { Component } from 'react';
import axios from 'axios';

export default class Insert extends Component {
constructor(props){
    super(props);
    this.onSubmit = this.onSubmit.bind(this);

    this.state={
        first_name:'',
        last_name:'',
        email:''
    }
}
onSubmit(e){
    e.preventDefault();
    const obj = {
        headers:{'Access-Control-Allow-Origin':'*'},
        first_name:this.state.first_name,
        last_name:this.state.last_name,
        email:this.state.email,
    };
    axios.post('http://localhost/reactphpdemo/insert.php',obj).then(res=>console.log(res.data));
    this.setState({
        first_name:'',
        last_name:'',
        email:''
    })
}
render() {
    return (
        <form onSubmit={this.onSubmit}>
            <div class="form-group">
                <input type="submit" value="Register User" class="btn btn-primary" name="name" />
            </div>
        </form>
    )   
}

【问题讨论】:

标签: php reactjs


【解决方案1】:

只需将这些添加到您的 .php 文件中即可:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: 'X-Requested-With,content-type'");
header("Access-Control-Allow-Methods: 'GET, POST, OPTIONS, PUT, PATCH, DELETE'");

或者您可以使用 Chrome 插件,例如“Moesif Origin & CORS Changer”

【讨论】:

  • 嗨,DenisDaniel707 感谢您的重播。我应该在 insert.php 文件中添加代码吗?你能用路径解释一下吗?我在哪里安装插件?错误显示在所有浏览器上,不仅是 Chrome 我该如何解决?你能帮我解决这个错误吗?
  • 如果您在 apache 上,您可以在 .htaccess 中设置标头,否则此 php 标头将发送到每个响应...所以如果浏览器请求:localhost/reactphpdemo/connect.php 并将其放在连接的顶部.php 文件
  • 是的,你可以在 insert.php 中添加它,但我会像@Kapsonfire 所说的那样将它添加到 connect.php 文件中
  • 在开发时使用该 CORS 插件也很方便,因为您可以使用开关启用或禁用 CORS,如果您选择了,请记住在开发后将其关闭。如果您使用的是 Chrome,这里是链接:chrome.google.com/webstore/detail/moesif-origin-cors-change/…
  • Hii DenisDaniel 您的解决方案将会奏效,谢谢。
猜你喜欢
  • 2017-07-25
  • 1970-01-01
  • 2020-07-10
  • 2016-06-30
  • 2016-10-08
  • 2017-02-07
相关资源
最近更新 更多