2017-11-26 3 views
0

Ich habe meine Ruhe api auf Raspberry Pi-Server gehostet über Localtunnel zu öffentlichen und versuchen, die API von localhost Knoten-Anwendung zugreifen. Lokale Knotenanwendung läuft auf Express und hat einige statische JS-Dateien. Von einem der statischen JS-Dateien, ich bin axios Ajax-Request tun api aber immer CORS Fehler zur Ruhe zu trösten:CORS Middleware funktioniert nicht in NodeJS

script.js

setTimeout(() => { 
    axios.get('https://wvoegmuism.localtunnel.me/api/ninjas') 
    .then(function (question) { 
     var data = question.data; 

    const questions = []; 
    $.each(data, function(index, value) { 
    console.log(JSON.stringify(value.the_question, null, "\t")) 
    console.log(JSON.stringify(value.the_answer, null, "\t")) 
    console.log(JSON.stringify(value.the_choices, null, "\t")) 
    questions.push(new Question(value.the_question, value.the_choices, value.the_answer)) 




    //console.log(data[index].the_question); 

    }) 
    quiz = new Quiz(questions) 
    populate() 
}), 1000}); 

I der CORS-Modul meiner ausdrücklichen Datei app.js :

var cors = require("cors"); 
app.use(cors()); 

zum Endpunkt auf einem anderen Server Meine Rest Datei api Route:

var express = require("express"); 
var app = express(); 
var router = express.Router(); 
var mongoose = require("mongoose"); 
var customerschema = require("../models/customersSchema"); 
var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens 
var config = require('../config'); // get our config file 
var user = require("../models/user"); 
var bodyParser = require("body-parser"); 
app.use(bodyParser.json()); 
app.set('superSecret', "tokenproject"); // secret variable 
mongoose.Promise = require('bluebird'); 


router.get('/ninjas', function(req, res) { 
    customerschema.find({}).then(function(ninjas) { 
    res.send(ninjas); 
    }) 
}); 

Konsolenfehler:

Failed to load https://wvoegmuism.localtunnel.me/api/ninjas: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. 

Beim folgenden Tutorial funktioniert es für einen Kerl, aber nicht ich. Was ich hier vermisse? Sollte ich CORS-Middleware nicht nur in meine lokale Knoten-App, sondern auch in REST-API-Routen aufnehmen?

+1

Erhalte ich einen Fehler? Wie sieht deine Route aus? Sie müssen sicherstellen, dass Sie genügend Informationen für die Frage bereitstellen und ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) einfügen. – LMulvey

+0

@LMulvey - FYI: Öffne eckige Klammer, mcve, schließe eckige Klammer = [mcve] – Quentin

+0

Danke, @Quentin. Ich habe es direkt nach der Veröffentlichung bemerkt. Ich sollte keine Fragen vor meinem Morgenkaffee beantworten. – LMulvey

Antwort

1

Should I include CORS middleware not only to my local node app but also to REST API routes?

Exakt! Der Api-Endpunkt muss eingeschaltet werden.

+0

Ja, das war es! Es funktionierte auch nicht, bis ich sowohl Rest als auch lokale Knotenserver neu startete. Beide laufen auf nodemon, aber in diesem Fall sieht es so aus, als ob der manuelle Neustart notwendig war. Das hat auch 15 Minuten meines Lebens verschwendet, lol. Vielen Dank! – Limpuls

Verwandte Themen