CORS-Problem: Die Electron-App kann nicht auf die API auf Localhost und Cloud Functions zugreifenJavaScript

Javascript-Forum
Guest
 CORS-Problem: Die Electron-App kann nicht auf die API auf Localhost und Cloud Functions zugreifen

Post by Guest »

Ich arbeite an einer Electron-App, die auf http://localhost:1212 gehostet wird, und sie muss API-Anfragen an eine der folgenden Adressen stellen: Allerdings erhalte ich ständig einen CORS-Fehler, wenn ich versuche, eine POST-Anfrage zu stellen:

Zugriff zum Abrufen bei „http://localhost:5001/nft-discord-relay ... r/validate“ vom Ursprung „http://localhost:1212/“ wurde durch CORS-Richtlinie blockiert: Antwort auf Preflight-Anfrage nicht. Die Zugriffskontrollprüfung besteht nicht: Auf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden.

Hier ist das Relevante Setup:

Electron App Code
So sende ich die Anfrage:

Code: Select all

export async function validateFarmer(discordId, farmerCode, walletAddress) {
try {
const response = await fetch(`${API_BASE_URL}/farmer/validate`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
discordId,
farmerCode,
walletAddress,
}),
});

const data = await response.json();
return data;
} catch (error) {
console.error(error);
return {
isValid: false,
message: 'Failed to connect to the server',
};
}
}
API-Servercode
Ich verwende die Middleware Express und cors, um CORS zu verarbeiten. Hier ist der relevante Code:

CORS Middleware

Code: Select all

const cors = require('cors');

const corsMiddleware = cors({
origin: (origin, callback) => {
const allowedOrigins = [
'http://localhost:1212',
'https://us-central1-nft-discord-relay.cloudfunctions.net',
];
if (!origin) return callback(null, true); // Allow requests with no origin (e.g., mobile apps)
if (allowedOrigins.includes(origin)) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
},
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true,
maxAge: 86400, // Cache preflight requests for 24 hours
});

module.exports = corsMiddleware;
Router:

Code: Select all

const express = require('express');
const router = express.Router();
const corsMiddleware = require('./path-to-cors-middleware'); // Adjust the path accordingly

router.use(corsMiddleware);

router.post('/farmer/validate', async (req, res) => {
console.info('Validate request received', {
discordId: req.body.discordId,
walletAddress: req.body.walletAddress,
});

const { discordId, farmerCode, walletAddress } = req.body;
if (!discordId || !farmerCode || !walletAddress) {
console.error('→ Missing required fields');
return res.status(400).json({
success: false,
message: 'Discord ID, Farmer Code, and Wallet Address are required',
});
}

const result = await FarmerHelper.validateFarmer(
discordId,
farmerCode,
walletAddress
);
console.info('→ Validation complete', {
discordId,
isValid: result.isValid,
});

res.status(result.isValid ? 200 : 400).json(result);
});

module.exports = router;

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post