我正在嘗試使用socket.io 連接java 服務器和Javascript 客戶端。當我在瀏覽器中看到調試器時,看起來正在接收數據,但我收到此錯誤:“原因:CORS 標頭‘Access-Control-Allow-Origin’丟失”并且我無法打印數據在客戶端。import...public class MeuServerSocket { //initialize socket and input stream private Socket socket = null; private ServerSocket server = null; private DataInputStream in = null; public MeuServerSocket(int port) { // starts server and waits for a connection try { while(true){ server = new ServerSocket(port); System.out.println("Server started"); System.out.println("Waiting for a client ..."); socket = server.accept(); System.out.println("Client accepted"); ObjectOutputStream saida = new ObjectOutputStream(socket.getOutputStream()); saida.flush(); // send available data from server to client saida.writeObject("Texto enviado 123..."); // takes input from the client socket in = new DataInputStream( new BufferedInputStream(socket.getInputStream())); String line = ""; // reads message from client until "Over" is sent boolean fim = false; while (!line.equals("Over") && !fim) { try { line = in.readUTF(); System.out.println(line); } catch(IOException i) { fim = true; System.out.println(i.toString()); } } System.out.println("Closing connection"); // close connection socket.close(); saida.close(); in.close(); } } catch (IOException i) { System.out.println(i); }catch(Exception e){ System.out.println(e.toString()); } }當我查看 Firefox 網絡時,我發現數據是在其中一個包內發送的......https://i.stack.imgur.com/yB0R6.jpg
2 回答

倚天杖
TA貢獻1828條經驗 獲得超3個贊
我在這里看到的最大問題是對 socket.io 的誤解。javascript 的 Socket.io 與 java 中的 Socket 庫不兼容。命名約定肯定會令人困惑。
socket.io 是一個與 Web 套接字 (ws://) 相關的庫。它實現了所有基本的 websocket 功能以及一些額外功能。
您的 Java 代碼擁有的是 TCP 套接字服務器。雖然 websockets 和 socket.io 是基于 TCP 套接字構建的,但您無法將 socket.io 客戶端連接到“裸”套接字服務器。
解決方案:如果您從網絡瀏覽器運行 javascript,那么您僅限于 websocket,這意味著您要將 java 代碼更改為 websocket 服務器。您可以在網上找到該庫。

慕少森
TA貢獻2019條經驗 獲得超9個贊
使用ws://...
而不是http://...
.
詳細信息: https
用于HTTP協議。在這種情況下,瀏覽器首先詢問服務器是否允許 CORS 是正確的。您尚未啟用 CORS。這就是為什么瀏覽器拒絕發送CORS請求是正常的。
但你說你想使用 Web Sockets。那么你應該使用ws://
,而不是http://
。對于 Web 套接字,沒有 CORS 策略,瀏覽器將在沒有 CORS 限制的情況下發送您的請求。
添加回答
舉報
0/150
提交
取消