reactサーバと別サーバでwebsocket通信をしたい
reactでSPAを作っている中で(http://localhost:3000)双方向通信実装のためにwebsocketを導入しようと思い、expressでサーバを(http://localhost:8080)立てたのですがCORSエラーが解決できません。
かなり時間をかけていろいろ自分で調べましたが解決できませんでした。
どなたかわかる方助言いただきたいです。
発生している問題・エラーメッセージ
Access to XMLHttpRequest at 'http://localhost:8080/socket.io/?EIO=4&transport=polling&t=NNm5Fvs' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
フォルダ構成(一部)
src
├── App.jsx
├── index.js
├── server
│ └── server.js
〜〜〜〜
js
1//src/server/server.js 2 3const express = require('express'); 4const app = express(); 5 6app.use(function(req, res, next){ 7 res.header('Access-Control-Allow-Origin', '*'); 8 res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); 9 res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); 10 res.header('Access-Control-Allow-Credentials', true); 11 res.header('Access-Control-Max-Age', '86400'); 12 next(); 13}); 14 15 16app.options('*', function (req, res) { 17 res.sendStatus(200); 18}); 19 20app.get('/', function(req, res){ 21 res.send('<h1>hello world</h1>'); 22}); 23 24var http = require('http').createServer(app); 25var io = require('socket.io')(http); 26 27io.on('connection', function(socket){ 28 console.log('a user connected'); 29}); 30 31 32http.listen(8080, function(){ 33 console.log('listening on *:8080') 34}); 35 36
試したこと
同じようなエラーを解決している人がたくさんいたのでその人たちの記事を参考にしながら、エラー分に言われるとおりにAccess-Control-Allow-Originに他サーバーからのアクセスを許可するように書いた。
またreact側がCORS対応できていないのかと思い、プロキシを8080番に設定したがエラー分は変わらず
json
1// ../package.json 2 3 "proxy": "http://localhost:8080",
補足情報
react側環境
・create-react-appで環境構築
・ポート番号:"http://localhost:3000"
node側環境
・"express": "^4.17.1"で環境構築
・ポート番号:"http://localhost:8080"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/23 02:14 編集
2020/11/23 03:11