[英]How to solve cors error in socket.io laravel and nodejs signalling app
我有一個用 laravel 和 socket.io 構建的聊天應用程序。 我的 laravel 應用程序位於一個域中,而我的 nodejs 應用程序位於另一個域中。 連接到我的 nodejs 信號應用程序會出現 cors 錯誤,而 nodejs 應用程序也會返回 cors 錯誤。 這是我的 nodejs 應用程序
"use strict";
require('dotenv').config();
const express = require('express');
const app = express();
const fs = require('fs');
const options = {
key: fs.readFileSync(process.env.KEY_PATH),
cert: fs.readFileSync(process.env.CERT_PATH)
};
const https = require('https').Server(options, app);
const io = require('socket.io')(https);
io.origins('*:*');
const listner = https.listen(process.env.PORT, function() {
console.log('Listening on ', listner.address().port);
});
//allow only the specified domain to connect
io.set('origins', process.env.DOMAIN + ':*');
require('./socket')(io);
app.get('/', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
// Add this
if (req.method === 'OPTIONS') {
res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, OPTIONS');
res.header('Access-Control-Max-Age', 120);
return res.status(200).json({});
}
res.send('Ok');
next();
我在 Laravel 后端安裝了一個 cors 中間件,但沒有任何區別。 任何幫助將不勝感激
您需要刪除這兩行。 cos,您首先設置了任何來源,並且您已經使用 env 指定了域。
io.origins('*:*');
io.set('origins', process.env.DOMAIN + ':*');
允許用戶的確切方法是
// process.env.DOMAIN == "https://anydomain.com:port"
// process.env.DOMAIN != "anydomain.com:port"
const options={
cors:true,
origins:[process.env.DOMAIN],
}
const io = require('socket.io')(https, options);
確保在后端正確設置了 CORS 配置。 另請注意,有時 Apache 或其他環境的默認設置可能與您應用的設置沖突。
最簡單的方法是使用laravel-cors包
另一種方法是將此代碼放在 public/index.php 文件中
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS, post, get');
header("Access-Control-Max-Age", "3600");
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header("Access-Control-Allow-Credentials", "true");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.