2015-09-26 12 views
7

Sto cercando di inviare i dati al servlet utilizzando HTTP POST angolare,angolare richiesta HTTP post - No 'Access-Control-Allow-Origin' intestazione è presente la risorsa richiesta

var httpPostData = function (postparameters,postData){ 

    var headers = { 
       'Access-Control-Allow-Origin' : '*', 
       'Access-Control-Allow-Methods' : 'POST, GET, OPTIONS', 
       'Accept': 'application/json' 
      }; 
    return $http ({ 

    method : 'POST', 
    url  : 'http://localhost:8080/json/jasoncontroller', 
    params : postparameters, 
    headers: headers, 
    data : postData 
    }).success (function (responseData){ 
     return responseData.data; 
    }) 
} 

ma sono continuare a errore che Nessuna intestazione 'Access-Control-Allow-Origin' è presente sulla risorsa richiesta. L'origine 'null' non è quindi consentita l'accesso.

avevo impostato seguenti intestazioni sul mio servlet

response.addHeader("Access-Control-Allow-Origin", "*"); 
    response.addHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); 
    response.addHeader("Access-Control-Max-Age", "3600"); 
    response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 

Se rimuovo i dati da inviare http funziona benissimo, ma senza fortuna con i dati.

enter image description here

+0

controllare lo stato e le intestazioni di risposta della richiesta OPZIONI effettuate. Queste intestazioni di controllo di accesso devono essere in quella richiesta di preflight – charlietfl

+1

Ho avuto lo stesso problema e ho risolto utilizzando 'response.setHeader (" Access-Control-Allow-Origin "," * ");' invece di 'response.addHeader ("Access-Control-Allow-Origin", "*"); '. Se si utilizza il metodo 'addHeader', consente molti valori alla stessa intestazione in base all'API. Vedi [javadoc] (http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletResponse.html#addHeader-java.lang.String-java.lang.String-). –

+0

@charlietfl ha aggiunto l'immagine dell'intestazione della risposta di rete. – Nomad

risposta

0

In realtà ciò che accade è in alcuni quadri due chiamate sono fatte,

  • opzioni che controlla quale sono disponibili metodi,
  • E poi c'è la chiamata effettiva.

opzioni richiedono solo risposta vuota 200 OK

if(request.methord == 'OPTIONS'){ 
    res.send(200); 
    } else { 
    next(); 
    } 

È inoltre possibile installare questo chrome extension per abilitare cors, che è la via più facile!

Problemi correlati