Javascript 节点服务器仅接受GET请求,但不会发出POST请求
我能够向本地服务器的/页面路由发出GET请求。但当从客户端获取请求发出POST请求时,不会发生任何事情 这是我的获取请求,数据在数据对象中。我正试图在服务器端展示它Javascript 节点服务器仅接受GET请求,但不会发出POST请求,javascript,node.js,reactjs,fetch-api,body-parser,Javascript,Node.js,Reactjs,Fetch Api,Body Parser,我能够向本地服务器的/页面路由发出GET请求。但当从客户端获取请求发出POST请求时,不会发生任何事情 这是我的获取请求,数据在数据对象中。我正试图在服务器端展示它 import React, { Component } from 'react' import io from 'socket.io-client' import OAuth from './OAuth' import Loading from './Loading' import Footer from './Footer' im
import React, { Component } from 'react'
import io from 'socket.io-client'
import OAuth from './OAuth'
import Loading from './Loading'
import Footer from './Footer'
import Tweets from './Tweets'
import { API_URL } from './config'
import './App.css'
const socket = io(API_URL) //,{transports: ['websocket']}
const providers = ['twitter', 'google', 'facebook', 'github']//import theese in because our auth controller needs to call our event for each provider which the event is named after the provider
export default class App extends Component {
state = {
loading: true
}
componentDidMount() {
socket.on('connect', function(){
console.log('connected')
});
fetch(`${API_URL}/wake-up`)
.then(res => {
if (res.ok) {
this.setState({loading: false})
}
})
const data = {
random1: 'random',
random2: 'random-input'
}
const options = {
method:'POST',
mode: 'no-cors',
header: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
}
fetch(`${API_URL}/page`, options);
}
render() {
const divStyles = {
}
const buttons = (providers, socket) =>
providers.map(provider =>
<OAuth
provider={provider}
key={provider}
socket={socket}
/>
)
return (
<div className='wrapper'>
<div className='container'>
{this.state.loading
? <Loading />
: buttons(providers, socket)
}
</div>
{
buttons
? <Tweets provider='twitter' />
: <div> Hasnt fetched</div>
}
<Footer />
</div>
)
}
}
import React,{Component}来自“React”
从“socket.io客户端”导入io
从“/OAuth”导入OAuth
从“./Loading”导入加载
从“./Footer”导入页脚
从“./Tweets”导入推文
从“/config”导入{API_URL}
导入“./App.css”
const socket=io(API_URL)/,{transports:['websocket']}
const providers=['twitter'、'google'、'facebook'、'github']//导入此事件,因为我们的身份验证控制器需要为每个以提供程序命名的提供程序调用我们的事件
导出默认类应用程序扩展组件{
状态={
加载:正确
}
componentDidMount(){
socket.on('connect',function(){
console.log('已连接')
});
获取(`${API\u URL}/wake-up`)
。然后(res=>{
如果(res.ok){
this.setState({loading:false})
}
})
常数数据={
随机1:'随机',
随机2:“随机输入”
}
常量选项={
方法:'POST',
模式:“无cors”,
标题:{
“内容类型”:“应用程序/json”,
},
正文:JSON.stringify(数据)
}
获取(`${API\u URL}/page`,选项);
}
render(){
常量divStyles={
}
常量按钮=(提供程序、套接字)=>
providers.map(provider=>
)
返回(
{this.state.loading
?
:按钮(提供程序、套接字)
}
{
按钮
?
:尚未提取
}
)
}
}
这是我的节点服务器,我试图在其中侦听post请求,这是我试图让数据控制台记录的位置。日志:
require('dotenv').config()
const express=require('express')
const path=require('路径')
常量fs=require('fs')
常量https=require('https')
const http=require('http')
const passport=require(‘passport’)
const session=require('express-session')
const cors=require('cors')
const socketio=require('socket.io')
const authRouter=require('./lib/auth.router')
const passportInit=require('./lib/passport.init')
const{SESSION\u SECRET,CLIENT\u ORIGIN}=require(“./config”)
const bodyParser=require('body-parser')
const app=express()
让服务器
//如果我们在生产中,我们已经在https中运行了
if(process.env.NODE_env===‘生产’){
server=http.createServer(应用程序)
}
//我们不在生产中,所以请加载我们的证书以便能够
//在本地以https模式运行服务器
否则{
常数证书选项={
key:fs.readFileSync(path.resolve(“./certs/server.key”),
cert:fs.readFileSync(path.resolve('./certs/server.crt'))
}
服务器=https.createServer(证书选项,应用程序)
}
//passport和接受JSON对象的设置
app.use(express.json())
//应用程序使用(express.static('public'))
use(bodyParser.json());
app.use(bodyParser.urlencoded({
扩展:false
}));
app.use(passport.initialize())
passportInit()
//接受客户的请求
应用程序使用(cors)({
来源:客户\来源
}))
应用程序使用(会话)({
机密:process.env.SESSION\u secret,
雷萨夫:是的,
saveUninitialized:true
}))
//将套接字连接到服务器并将其添加到请求
//这样我们以后可以在控制器中访问它们
常量io=socketio(服务器)
应用程序集('io',io)
//捕获启动请求,以便休眠的Heroku实例可以
//尽快作出反应
app.get('/wake-up',(req,res)=>res.send('我猜这是因为你使用了no-cors
。到目前为止,我还没有看到他们在哪里使用no-cors
,并且完全理解它=)的问题。请删除该属性,然后重试。res.send(req.body'))
当您发布此问题时出现的打字错误,或者您的代码中实际存在的问题?谢谢您的回答。我尝试了无cors和cors,但仍然遇到同样的问题,不幸的是,我附加了路由文件,以防有人帮我解决问题。无cors
导致请求切换到get
删除它并更正您的CORS标题。