Node.Js Fehler "Keine" Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderten"

Diese Frage ist ähnlich wie andere, aber es ist ein Unterschied, der macht es sehr verwirrend, warum es nicht funktioniert.

Mein JavaScript aufrufen 6 von json-Dateien und alles richtig funktioniert. In Node.JS ich habe cors-Header und eingerichtet wie unten gezeigt:

var fs = require('fs');
var http = require("https");
var express = require('express');
var app = express();
var path = require('path');
var http = require("http");
var url = require("url");
var req = require('request')
var pem = require('pem');
var cors = require("cors");

app.use(express.static(path.join(__dirname, '../')));

app.listen(process.env.PORT || 8080);

app.options('*', cors()); 

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-  With, Content-Type, Accept");
    next();   
});

app.all('/posts', function(req, res){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
});

app.get('/', function (req, res) { 
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    res.writeHead(200, {'Content-Type': 'text/plain'});
    contents = fs.readFileSync("sliderImages.json", "utf8");
    console.log(path.join(__dirname, '/sliderImages.json'));
    res.end(contents);
});

Alle 6 json-Dateien sind gepackt von der absoluten URL-Pfad von Node JS. Ich habe 2 weitere gestern und alles war in Ordnung arbeiten. Doch heute machte ich ein und implementiert die gleiche Art und Weise und erhielt die folgende Fehlermeldung:

Kein 'Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource. Herkunft 'null' ist daher nicht der Zugriff erlaubt.

Ich die Umsetzung jeder die gleiche Weise, Beispiel:

var base_url = 'http://127.0.0.1:8080';

mainInformationTop();

function mainInformationTop()
{
    $.ajax({
        type: "GET", 
        url: base_url + "/api/topInformation.json", 
        dataType: "json",
        success: function(response)
        {
            var json_obj = response.mainDescription;
            var imagesSlider="";
            var imagesSliderDescription ="";
            for (var i = 0; i< json_obj.length; i++) 
            {

            }

        }
        , 
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status);
        }  
    })    
}

Ich glaube nicht, dass die json-Datei ist relevant, aber unten ist meine json-Datei:

{"mainDescription":[
{
"display": "my display",
"description" : "my description"
}
]}

Ich nahm die Informationen in der for-Schleife für die Prüfung als auch meine Anhängen, weil irrelevant. Aus irgendeinem Grund fehlschlägt und geht auf Fehler statt auf Erfolg. Alle anderen Anrufe eingerichtet werden, der gleichen Art und Weise funktionieren.

  • Ich versuchte, die, sowie alle anderen funktionieren.
  • Warum? Der server scheint nicht zu generieren JSONP.
  • Der Wechsel zu jsonP lässt Sie alle scheitern
  • Ich denke, nur Typ json ist in Ordnung, da brauche ich keine Rückrufe. Und der rest alles nur für json sowie
  • Sie sollten NICHT readFileSync im app.get. (Aber das löst nicht Ihr Problem.) Sie sicher, es sollte benannt werden /postss statt /posts? (Das ändern könnte, dass nicht die Frage zu lösen, entweder.) Führen Sie diese lokale Datei in einem browser, anstatt von einem lokalen server? Das vielleicht erklärt die Herkunft "null"?
  • Siehe hier: XmlHttpRequest Fehler: Origin null ist nicht erlaubt, Access-Control-Allow-Origin
  • sorry, war Tippfehler bei der Formatierung werde ich beheben.
  • das macht absolut keinen Sinn. wissen Sie, was JSONP ist?
  • Ja, es verwendet, um die bypass-cross domains. Aber es funktioniert nicht mit, und arbeitete mit json
  • sorry für die Verwirrung, war nicht Sinn Sie. aber in $.ajax, du bist anfordern von Daten von einem .json-Datei, das ist eine statische Datei, die in Ihrem statischen Verzeichnis richtig?
  • Ja, habe ich alle diese Dateien in ein statisches Verzeichnis.
  • Sie scheinen nicht zu Einstellung cors-Header für die Dateien.
  • Ich nicht ganz Folgen, ich bin neu cors. Ich habe diese app.Optionen('*', cors()); Und die anderen 6 fein gearbeitet, so verstehe ich nicht, warum das scheitern eines 1 neuen jetzt. Wenn Sie nicht wissen, die Antwort geben Sie bitte eine Antwort ob es funktioniert kann ich markieren Sie es richtig.
  • Die anderen 6 werden auch die Dateien statische Dateien? die .Optionen () - Einstellung behebt nur Anfragen, die erfordern, dass ein preflight, eine Ebene .Holen Sie sich eine statische Datei nicht erforderlich, einen "preflight".
  • Auch ich verstehe nicht, warum Menschen unten stehen, Stimmabgabe, wenn seine eine berechtigte Frage.
  • Wahrscheinlich, weil diese Frage kommt jeden Tag, und das problem ist immer das gleiche: die cors-Header nicht gesetzt. Ich verstehe, dass Sie versuchen, Sie, aber, Sie waren noch nicht erfolgreich. app.use(cors()); gemäß der Dokumentation.
  • Irgendwelche Tipps oder eine Antwort, die Sie bieten können? Sorry, wenn es das doppelte habe ich nicht bemerkt, dass es wohl die gleichen.
  • Scheint dies, wie die richtige track-app.verwenden, (cors({origin: 'localhost:8080'}));?
  • Sie sollten nicht brauchen, die {origin: Teil, es sei denn, Sie beschränken wollten, es unten zu nur Ihre app-Zugriff über den browser (nicht aufhören können, anderen Servern ab, es zu tun, obwohl, wenn Sie den server in der wildnis)

InformationsquelleAutor L1ghtk3ira | 2016-05-26
Schreibe einen Kommentar