0
votes

Socket.io et noeud JS résultant des CORS résultant problème bloqué

Je travaille sur la fonctionnalité de discussion. Il existe deux types de clients, l'un est le frontend de ma demande et la seconde est un autre site Web. Je sais qu'il y a beaucoup de problèmes comme celui-ci, mais j'ai essayé toute la solution, mais je reçois toujours l'erreur suivante:

accès à XMLHTTPQUEST à 'https: //mydomain/socket.io/? EIO = 3 & Transport = NCJOM1W' de l'origine 'NULL' a été bloqué par la stratégie CORS: la valeur de "l'accès-contrôle-control-autorisant- L'en-tête d'origine dans la réponse ne doit pas être le fichier wildcard '*' lorsque le mode d'identification de la demande est «Inclure». Le mode de vérification des demandes d'informations initiées par le XMLHTTPRequest est contrôlé par l'attribut Sansedentials. P> blockQuote>

Et cette erreur que je vais sur le côté client de mon propre front extrémité: P>

https: //mydomain/socket.io/? EIO = 3 & Transport = Polling & T = NCJNJUX 404 (non trouvé) P> blockQuote>

Voici comment j'essaie de se connecter de côté client. p> xxx pré>

et ceci est mon code serveur.js p>

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const passport = require("passport");
const users = require("./routes/api/users");
const base = require("./routes/api/base");
const leads = require("./routes/api/leads");
const requests = require("./routes/api/requests");
const offApp = require("./routes/api/offApp");
const chat = require("./routes/api/chat");
const chatSocket = require("./routes/socket/chat");
const path = require("path"); // on top
const app = express();
// const client = require('socket.io').listen(4000).sockets;
const https = require('https');
const fs = require('fs');

var options = {
  pfx: fs.readFileSync('certificate.pfx'),
  passphrase: 'password'
};

app.all('/*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, *');
  next();
});

var server = https.createServer(options, app);
var client = require("socket.io").listen(server);
client.origins('*:*') ;
server.listen(443);

// Bodyparser middleware
app.use(
  bodyParser.urlencoded({
    extended: false
  })
);
app.use(bodyParser.json());

// DB Config
const db = require("./config/keys").mongoURI;

// Connect to MongoDB
mongoose
  .connect(
    db,
    { useNewUrlParser: true }, (err, db) => {

      if (err) {
        throw err;
      }
      console.log('MongoDB connected');
      chatSocket(db, client);
    });

// Passport middleware
app.use(passport.initialize());

// Passport config
require("./config/passport")(passport);

// Routes
app.use("/api/users", users);
app.use("/api/base", base);
app.use("/api/leads", leads);
app.use("/api/requests", requests);
app.use("/api/offapp", offApp);
app.use("/api/chat", chat);

const port = process.env.PORT || 5000;

app.use(express.static("client/build")); // change this if your dir structure is different
app.get("*", (req, res) => {
  res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
});

app.listen(port, () => console.log(`Server up and running on port ${port} !`));


2 commentaires

Quelle version de socket.io que vous utilisez dans le côté serveur?


@yueyou j'utilise 2.3.0


3 Réponses :


1
votes

// utilise des cors comme ça- // Vous devez l'utiliser comme des articles moyens xxx


0 commentaires

1
votes

danois essayer cette solution, j'espère que cela fonctionnera

const client = require("socket.io")(server, {
    handlePreflightRequest: (req, res) => {
        const headers = {
            "Access-Control-Allow-Headers": "Content-Type, Authorization",
            "Access-Control-Allow-Origin": req.headers.origin, //or the specific origin you want to give access to,
            "Access-Control-Allow-Credentials": true
        };
        res.writeHead(200, headers);
        res.end();
    }
});

client.on("connection", () => {
    console.log("Connected!");
});

server.listen(443);


0 commentaires

1
votes

Installez le package Cors à l'aide de NPM i Cors

dans votre fichier App.js, Cors Cors = Exiger ('Cors')

App.Utilisez (Cors ());


0 commentaires