数据未使用 axios 发送到 react 和 Unsupported protocol localhost: axoos 的后端

IT技术 javascript reactjs express mern
2022-07-29 01:14:46

我使用 express js 作为后端,并且还在 react js 的 package.json 中添加了后端代理。在它曾经使用 fetch 方法引发错误并转移到 axios 方法以防止这种情况之前。数据为 json 格式,在邮递员上复制粘贴以检查后端后完全正常工作。

import React ,{useState} from 'react'
import './contact.css'
import axios from "axios"


const Contact = (e) => {
    const [email, setEmail] = useState('')
    const [description,setDescription]=useState('');
    const[message,setMessage]=useState('')

const [name ,setName] = useState('')


const url='localhost:5000/api/contact'
    const contactClick=async (e)=>{
      const subject="contacting"
        e.preventDefault();
      const formData={
        name:name,
        email:email,
        subject:subject,
        description:description
      }

      console.log(JSON.stringify(formData));
      axios.post(url, JSON.stringify(formData))
   .then(res => setMessage('email sent'))
   .catch(err => {setMessage('Unable to sent email ')
  return console.log(err)})

    };
    
  return (
    <>
    <div className='form__container' >
    <form onSubmit={contactClick} className='contact__form'>
    {message}

        <input type="email" placeholder='Email' value={email} required onChange={(e)=>setEmail(e.target.value) 
} />


        <input type="text"  placeholder='name' value={name} required onChange={e=>setName(e.target.value)} />
        <input type="textarea" placeholder='Description' className='text-area' value={description} onChange={(e)=>setDescription(e.target.value)}/>
        <input type="submit" title="Submit" />

    </form>
    </div>
    </>
  )
}

export default Contact

提交时抛出的错误

3个回答

不支持的协议:localhost

因为您使用的 URLlocalhost作为协议:

const url='localhost:5000/api/contact'

将此与“完整” URL 进行比较:

const url='http://localhost:5000/api/contact'

URL 以协议和冒号开头。无论解析那个 URL 都不会直观地知道你的意思,它只会根据标准解析你提供的字符串。

指定协议:

const url='http://localhost:5000/api/contact'

或者省略它,但保留//根以使用当前页面使用的任何协议:

const url='//localhost:5000/api/contact'

我认为axios.post()将数据作为对象而不是文档中提到的字符串。

将其替换为axios.post(url, formData)不对其进行字符串化。

https://axios-http.com/docs/post_example

但结果数据JSON.stringify(formData)'{the data}'

从 localhost:3000 发送到后端到 localhost:5000 是否可能是 cors 策略阻止