Как решить проблему с политикой CORS

Я создаю проект, в котором хочу использовать Socket.io. Теперь у меня ошибка в консоли браузера:

Доступ к XMLHttpRequest по адресу «https://back.escootrent.com/socket.io/?EIO=4&transport=polling&t=OwxDnkM» из источника «https://www.escootrent.com» заблокирован политикой CORS: Нет ' Заголовок Access-Control-Allow-Origin присутствует в запрошенном ресурсе.

Как видите я использую свои поддомены, с которыми все ломается. Знающие доменные ссылки с их каталогом.
Клиентский каталог — это базовое веб-приложение на html, css, js, php. А теперь для подключения к серверу используйте io('https://back.escootrent.com/socket.io');
Другой каталог — это сервер для Socket.io с этим кодом:
сервер.js

const express = require('express');
const https = require('https');
const fs = require('fs');

const app = express();
const options = {
  key: fs.readFileSync('./_.escootrent.com_private_key.key'),
  cert: fs.readFileSync('./escootrent.com_ssl_certificate.cer')
};
const server = https.createServer(options, app);
const io = require('socket.io')(server);

app.get('/chats', function(req, res) {
    res.send('answ');
});

io.on('connection', socket => {
    console.info('User connected', socket.id);
})

io.on('disconnect', () => {
    console.info('User disconnected', socket.id);
});

server.listen(443, (err) => {
    if (err) {
        throw Error(err);
    }
    console.info('Server started!');
});

Все это основано на OpenServer и работает с локальными параметрами, но не работает с доменами.

Я попробовал это, и ничего не изменилось

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', 'https://www.escootrent.com');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
  res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});
io.origins((origin, callback) => {
  if (origin === 'https://www.escootrent.com') { 
    callback(null, true);
  } else {
    callback('Origin not allowed', false);
  }
});
const cors = require('cors');
app.use(cors());

какую версию Socket.io вы используете? потому что io.origins обесценивается

Yuvaraj M 08.04.2024 07:53

@Yuvaraj Я использую 4.7.5

NewGodKirill 08.04.2024 12:51

попробуйте изменить инициализацию

Yuvaraj M 08.04.2024 13:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В моей ситуации решение заключается в использовании другого порта:

server.listen(1111, (err) => {
    if (err) {
        throw Error(err);
    }
    console.info('Server started!');
});

Дополнительно откройте этот порт в настройках вашего брандмауэра.

Это не имеет никакого смысла. Изменение порта не исправит несоответствие источника.

gre_gor 11.04.2024 06:46

Другие вопросы по теме