2016-01-18 18 views
5

Viene visualizzato il seguente errore quando si tenta di caricare una mia pagina Web: campo dell'intestazione della richiesta Access-Control-Allow -Origin non è consentito da Access-Control-Allow-Headers nella risposta di preflight.Campo di intestazione richiesta Access-Control-Allow-Origin non consentito da Access-Control-Allow-Headers nella risposta preflight

Ho esaminato altre risposte che rispondono a questo problema e indicano mancanza di supporto CORS. La cosa confusa è che ho un supporto cors! Almeno penso di sì.

sto provando a connettersi Zingchart al mio angolare front end JS e utilizzando una richiesta AJAX per ottenere i dati dal mio REST API (a localhost: 3000)

Qui è la mia chiamata AJAX:

window.feed = function(callback) { 
    $.ajax({ 
     type: "GET", 
     dataType: "json", 
     headers: { 
      Accept: "application/json", 
      "Access-Control-Allow-Origin": "*" 
     }, 
     url: "http://localhost:3000/readings", 
     success: function (data) { 
      var mem = data.mem.size/10000; 
      var tick = { 
       plot0: parseInt(mem) 
      }; 
      callback(JSON.stringify(tick)); 
     } 
    }); 

mio implementazione API REST include quanto segue:

// CORS Support 
app.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type'); 
    next(); 
}); 

mio API REST è stato costruito con l'aiuto di questo tutorial: https://www.youtube.com/watch?v=OhPFgqHz68o

risposta

6

Estrarre lo "headers" e "dataType". La richiesta sarà quindi simile a questa:

$.ajax({ 
    type: "GET", 
    url: "http://localhost:3000/readings", 
    success: function (data) { 
     var mem = data.mem.size/10000; 
     var tick = { 
      plot0: parseInt(mem) 
     }; 
     callback(JSON.stringify(tick)); 
    } 
}); 

Le intestazioni stanno attivando la richiesta di preflight.

Se stai usando angolare, mi piacerebbe altamente non suggerirei di usare jQuery per AJAX e di utilizzare invece angolare di built-in $http service.

Sono al team di ZingChart. Holler se possiamo aiutarti con i tuoi grafici.

+0

Grazie Patrick! Se il servizio $ http integrato funziona meglio, sarei più che felice di usarlo. Avete qualche esempio che potrei usare? Quello che farò è usare questa libreria per OTTENERE i miei dati dal backend e quindi analizzare la risposta in modo che rispetti i requisiti di formato di Zingcharts, sono nuovo, suona bene? – Django

+0

Primo: se la risposta risolve il tuo problema, ti preghiamo di accettarlo. | Sembra giusto. Il link che ho postato sopra ha un sacco di informazioni sull'utilizzo del servizio $ http. Abbiamo anche una demo che utilizza AJAX con Angular disponibile qui: http://codepen.io/zingchart/pen/pjerjY –

+0

Grazie ovviamente accetterò la tua risposta. Negli strumenti di sviluppo, il tuo codice mi dà il seguente problema: Uncaught TypeError: Impossibile leggere la 'dimensione' della proprietà di undefined. Sai perché potrebbe essere? – Django

Problemi correlati