2015-09-26 10 views
7

próbuję wysłać dane do serwletu przy użyciu kątowej HTTP POST,kątowa żądania HTTP POST - Nie „Access-Control-Allow-Origin” header jest obecny na żądanego zasobu

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; 
    }) 
} 

ale jestem dalej błąd, który wystąpił Brak nagłówka "Access-Control-Allow-Origin" na żądanym zasobie. Pochodzenie "null" jest zatem niedozwolone.

miałem ustawione następujące nagłówki na moim serwletu

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"); 

Jeśli usunąć dane z HTTP POST działa dobrze, ale nie ma szczęścia z danymi.

enter image description here

+0

sprawdź status i nagłówki odpowiedzi dla zgłoszonego żądania OPCJE. Te nagłówki kontroli dostępu muszą być w tym zgłoszeniu wstępnym. – charlietfl

+1

Miałem ten sam problem i rozwiązałem go przy użyciu 'response.setHeader (" Access-Control-Allow-Origin "," * ");' zamiast 'response.addHeader ("Access-Control-Allow-Origin", "*"); '. Jeśli używasz metody 'addHeader', to pozwala ona wielu wartościom na ten sam nagłówek zgodnie z API. Zobacz [javadoc] (http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletResponse.html#addHeader-java.lang.String-java.lang.String-). –

+0

@charlietfl dodano obraz nagłówka odpowiedzi sieci. – Nomad

Odpowiedz

0

Faktycznie, co się dzieje w niektórych ram dwa połączenia są wykonane,

  • OPCJE który sprawdza, jakie są dostępne metody,
  • a następnie jest rzeczywiste połączenia.

opcje wymagają tylko puste odpowiedź 200 OK

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

Można również zainstalować ten chrome extension włączyć Cors, że to prosty sposób na zewnątrz!

Powiązane problemy