Heim > Fragen und Antworten > Hauptteil
Es scheint, dass meine POST-Anfrage irgendwo in meinem REACT-Client-Code in GET konvertiert wird. Dies ist der Reaktionscode:
function SavePatient(event) { event.preventDefault(); console.log("Saving Patient Data"); console.log(patientData); fetch('http://localhost:3001', { Method: 'POST', Headers: { 'Accept': 'application/json', 'Content-Type': 'multipart/form-data' }, Body: JSON.stringify(patientData), Cache: 'default' });
Dies ist der Servercode:
function requestListener(req,res) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader( 'Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); console.log(req.url,req.method,req.headers); // console.log(req); //process.exit(); const url = req.url; const body = []; let parsedBody = ""; function readData(chunk) { console.log(chunk); body.push(chunk); } function endReadData(chunk) { parsedBody = Buffer.concat(body).toString(); console.log(parsedBody); } if (url === '/savepatient') { const body = []; req.on('data', readData); req.on('end', endReadData); res.setHeader('Content-Type', 'text/json'); res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader( 'Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); res.write('{"name":"John", "age":30, "car":null}'); console.log('Saving...'); fs.writeFileSync('storage/message.txt','TESTE'); return res.end(); } // console.log('Aqui') // res.setHeader('Content-Type', 'text/html'); // res.write('<html>'); // res.write('<head><title>MEDPRO.app server</title></head>'); // res.write('<body><h1>Hello from the MEDPRO.app server!</h1></body>'); // res.write('</html>'); // res.end(); }
Der Servercode funktioniert einwandfrei und ich erhalte POST-Anfragen normalerweise über Postman. Das Problem ist, dass, wenn ich die Anfrage vom Client mit fetch sende, sie als POST ankommt ... sehr seltsam.
Ich habe erwartet, dass die POST-Anfrage den Server erreicht.
Kann über den Postman-Testserver gefunden werden.
Für meinen Client ist dies die Nachricht, die der Server erhält:
/get{ Host: 'localhost:3001', Verbindung: „am Leben bleiben“, 'sec-ch-ua': '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"', 'sec-ch-ua-mobile': '?0', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/112.0.0.0 Safari/537.36',
'sec-ch-ua-platform': '"Windows"', Akzeptieren: '/', Quelle: 'http://localhost:3000', 'sec-fetch-site': 'Gleiche Site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'leer', Zitiert von: 'http://localhost:3000/', 'Kodierung akzeptieren': 'gzip, deflate, br', 'Rezeptive Sprache': 'en,en-US;q=0.9,es;q=0.8,pt-BR;q=0.7,pt;q=0.6' }
P粉1166315912024-04-04 00:22:48
尝试在 fetch
方法中将所有内容设置为小写;这应该可以解决问题,因为它区分大小写。
就像这样:
function SavePatient(event) { event.preventDefault(); console.log("Saving Patient Data"); console.log(patientData); fetch('http://localhost:3001', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'multipart/form-data' }, body: JSON.stringify(patientData), cache: 'default' });