[[:oktatas:web:back-end_framework:express|< Express]] ====== Express - Cors ====== * **Szerző:** Sallai András * Copyright (c) 2023, Sallai András * Szerkesztve: 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Szerver ===== const Router = require('express') const router = new Router() router.get('/msg', (req, res) => { res.json({msg: 'mehet'}) }) module.exports = router const express = require('express') const router = require('./routes') const app = express() app.use(express.json()) app.use('/',router) PORT = process.env.PORT || 8000 app.listen(PORT, () => { console.log(`Listening: ${PORT}`) }) ===== Készítsünk kliens ===== fetch('http://localhost:8000/msg') .then((res) => res.json()) .then((data) => console.log(data)) Futtassuk szerveren, például lite-server. { "server": ["src"] } pnpm install lite-server Ha Insomnia, Postman, HTTPie vagy curl segítségével nézem meg az API-t nincs probléma. Ha készítek egy weblapot, ami a kliensként fog működni, és az egy másik szerveren futtatom, például a lite-serveren, akkor ez nem fog működni. A Cors beállításokra panaszkodik. ===== A cors beállítása ===== pnpm install cors const cors = require('cors') app.use(cors()) Ezzel a beállítással már működik. Szabályozhatjuk honnan engedélyezzük. Egy teljesebb kóddal: const express = require('express') const router = require('./routes') const app = express() const cors = require('cors') var corsOptions = { origin: 'http://192.168.10.109:8000' } app.use(cors(corsOptions)) app.use(express.json()) app.use('/',router) PORT = process.env.PORT || 8000 app.listen(PORT, () => { console.log(`Listening: ${PORT}`) }) ===== Linkek ===== * https://www.test-cors.org/ (2023)