Ik gebruik reageer op de front-end en ik bel API van een ander domein dat ik niet bezit. Mijn AXIOS-aanvraag:
axios(requestURL, {
method: 'GET',
headers: {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
'Authorization': key,
withCredentials: true,
mode: 'no-cors',
}
Ik blijf dezelfde foutmelding krijgen: Cors Header ‘Access-Control-Toe-Origin’ Missing. Is dit iets dat ik kan overwinnen van de frontend? Ik weet voor een feit dat mensen die API gebruiken, zodat het geen backend-fout kan zijn, toch? Ik heb geprobeerd veel API’s te vragen en zelfs niet één werkte met mijn code. Ik heb geprobeerd https://cors-anywhere.herokuapp.com en het werkte prima voor als een week, Ik denk dat het vandaag neer is. Ik wil dat mijn site 24/7 verblijft, dus het gebruik van een proxy is geen optie
Antwoord 1, Autoriteit 100%
U moet helaas het verzoek op de een of andere manier proxy doen. CORS-aanvragen worden om veiligheidsredenen door de browser geblokkeerd. Om dit te voorkomen, moet backend injecteer de kop van de oorsprong voor u toe.
Oplossingen zijn afhankelijk van waar u moet proxy, dev of productie.
Development Environment of Node.js Production Webserver
De eenvoudigste manier om het in dit scenario te doen, is om de ‘HTTP-proxy-middleware’ NPM-pakket
te gebruiken
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
app.use(proxy('/api', {
target: 'http://www.api.com',
logLevel: 'debug',
changeOrigin: true
}));
};
Productie – Webserver waar u volledige toegang heeft
Kijk op de volgende pagina om te zien hoe u dergelijke proxy’s op uw webserver kunt inschakelen:
https://enable-cors.org/server.html
Productie – Statische hosting / webserver zonder volledige toegang
Als je hosting PHP ondersteunt, kun je een php-script toevoegen zoals: https://github.com/softius/php-cross-domain-proxy
Vervolgens een verzoek van uw app naar het script, dat het doorstuurt en headers invoegt bij het antwoord
Als je hosting geen PHP ondersteunt
Helaas zult u moeten vertrouwen op een oplossing zoals degene die u hebt gebruikt.
Om te voorkomen dat u afhankelijk bent van een service van derden, moet u ergens een proxyscript implementeren dat u gaat gebruiken.
Mijn suggesties zijn:
-
Verplaats naar een hosting die php ondersteunt 🙂 (Netlify zou een oplossing kunnen zijn, maar ik weet het niet zeker)
-
Je kunt bijvoorbeeld een op node.js gebaseerd proxyscript in Firebase implementeren (firebase-functies), om ervoor te zorgen dat het niet op magische wijze uitvalt, en het gratis abonnement kan mogelijk je aantal verzoeken aan.
-
Maak een gratis Amazon AWS-account aan, waar je de kleinste instantie een jaar lang gratis krijgt, en voer daar een ubuntu-server met nginx-proxy uit.
Antwoord 2, autoriteit 14%
U moet CORS van back-end toestaan om verzoeken te doen.
Antwoord 3, autoriteit 14%
Men kan CORS-anywheregebruiken. Het is een NodeJS reverse proxy die CORS-headers toevoegt aan het proxyverzoek.
Als ik CORS wil toevoegen aan https://test-example.com, doe ik dat als volgt:
https://cors-anywhere-herokuapp.com/https://test-example.com