第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Socket IO 和 Express Cross origin 錯(cuò)誤或控制臺(tái)中未找到 404 錯(cuò)誤

Socket IO 和 Express Cross origin 錯(cuò)誤或控制臺(tái)中未找到 404 錯(cuò)誤

一只甜甜圈 2023-12-14 16:25:17
盡管運(yùn)行 cors 庫,但我還是遇到了跨源標(biāo)頭錯(cuò)誤,或者只是在控制臺(tái)中輪詢時(shí)未找到 404。項(xiàng)目結(jié)構(gòu)如下所示我的目標(biāo)是在每個(gè)視圖上都有小聊天小部件。我會(huì)將其作為 EJS 部分包含到其他視圖中。我不確定我出了什么問題,我嘗試在端口 5000 上運(yùn)行 Express,在 8080 或 3000 上運(yùn)行 Socket IO,所有不同的組合都沒有產(chǎn)生任何好處。前端部分EJS看起來像這樣<ul id="messages"></ul><form action="/" method="POST" id="chatForm"><input id="txt" autocomplete="off" autofocus="on" oninput="isTyping()" placeholder="type your message  here..." /><button>Send</button></form>前端頁面的其余部分如下所示  <head>  <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.0.4/socket.io.js" integrity="sha512-aMGMvNYu8Ue4G+fHa359jcPb1u+ytAF+P2SCb+PxrjCdO3n3ZTxJ30zuH39rimUggmTwmh2u7wvQsDTHESnmfQ==" crossorigin="anonymous"></script>    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><style> etcetc<%- include ('./partialChatWidget.ejs') %>還有JS<Script> var socket = io.connect('http://localhost:5000', { transport : ['websocket'] } );$('form').submit(function(e){    e.preventDefault();     socket.emit('chat_message', $('#txt').val());    $('#txt').val('');    return false;});socket.on('chat_message', function(msg){    $('#messages').append($('<li>').html(msg));});socket.on('is_online', function(username) {    $('#messages').append($('<li>').html(username));});var username = prompt('Please tell me your name');socket.emit('username', username);</script>那么這里出了什么問題,我需要在不同端口上有2個(gè)服務(wù)器還是2個(gè)實(shí)例,我一直認(rèn)為socket IO借用了http服務(wù)器,而不是express實(shí)例。謝謝你的協(xié)助。我可能會(huì)補(bǔ)充說,當(dāng)我嘗試在 2 個(gè)不同的端口上運(yùn)行時(shí),會(huì)出現(xiàn)跨源錯(cuò)誤。否則我會(huì)在控制臺(tái)中找不到 404。頁面以及部分和初始 JS(Jquery) 運(yùn)行。
查看完整描述

3 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

經(jīng)過一番來來回回......


只需確保盡快將套接字 IO 的前端鏈接加載到頭部即可。


并將這部分包含在前端


var socket = io.connect('http://localhost:5000', { transport : ['websocket'] } );

一定要在服務(wù)器端包含這個(gè),這不會(huì)有什么壞處,除非你想阻止某些頁面進(jìn)行 CORS 訪問


app.use(cors({origin: '*'})) 

接下來的 2 個(gè)步驟使一切順利。


const app = express();

const http = require('http').Server(app);

const io = require('socket.io')(http,

{

cors: {

origin: "http://localhost:5000 {this is the port of your back end app, not for the socket IO port }",

credentials: true

}}) 

最后,確實(shí)是 2 臺(tái)服務(wù)器。


const server = http.listen(8080, function() {

console.log('listening on *:8080');

});

app.listen(5000, console.log("App Running on http://localhost:5000"));

我花了一段時(shí)間,但現(xiàn)在一切都一勞永逸了(我希望)




查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

試試這個(gè)代碼


`const server = app.listen(PORT,()=>console.log(`listening on port ${PORT}`));

io = require('socket.io').listen(server);

io.on('connection', (socket) => {

console.log('a user connected');

});`


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

app.use((req,res, next)=>{

res.setHeader('Access-Control-Allow-Origin',"http://localhost:3000");

res.setHeader('Access-Control-Allow-Headers',"*");

res.header('Access-Control-Allow-Credentials', true);

next();

});


使用此代碼并安裝較舊的 socket.io 版本 2.3.0


查看完整回答
反對(duì) 回復(fù) 2023-12-14
  • 3 回答
  • 0 關(guān)注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)