2016-08-30 4 views
1

Ich möchte das Dokument Cookie in der http-Aufruf in eckigen senden. Ich habe bereits mitCredentials verwendet, aber es kann nur den Cookie auf Browserebene senden. Ich benutze auch die Cross-Domain, aber es funktioniert nicht gut. Unten ist der Code, den ich verwende.Senden Sie Cookies in ajax eckig

$http({ 
    method: 'GET', 
    url: url, 
    xhrFields: { withCredentials: true }, 
    crossDomain: true,  
    header:{ 'SHOPSESSIONID' : sessionStorage.getItem("SHOPSESSIONID") } 
}).success(function(data){ 
    return data; 
}).error(function(data){ 
    return data; 
}); 
+0

was – Aravind

Antwort

0

Verwendung $httpProvider in der Konfigurationsphase:

app.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.defaults.withCredentials = true; 
}]) 

und man konnte die xhrFields und crossDomain proporties

btw, Winkel Verwendungen then statt success und catch statt error aufgeben. (Das ist die promise Syntax)

+0

Nach dem Hinzufügen Ihrer Zeile zeigt es "Ein Platzhalter '*' kann nicht im Header 'Access-Control-Allow-Origin' verwendet werden, wenn das Credentials-Flag wahr ist" Jetzt den folgenden Code verwenden. (Funktion () {'use strict'; angular.module ('app'). config (['$ httpProvider', Funktion ($ httpProvider) {$ httpProvider.defaults.withCredentials = true; $ httpProvider.defaults.crossDomain = true;}]) .service ('UtilityService', ['$ log', '$ q', '$ http' , Funktion ($ log, $ q, $ http) {this.getHTTPGET = Funktion (URL) {return $ http ({Methode: 'GET', URL: URL}). Dann (Funktion (Daten) {return data;}) .catch (Funktion (Daten) {return data;});};}]);})(); –

+1

Sie müssen den 'Access-Control-Allow-Origin'-Header auf der Serverseite ändern, siehe http://stackoverflow.com/questions/19743396/cors-cannot-use-wildcard-in-access-control-allow-origin -when-Anmeldeinformationen-Flag-i – MoLow

0

Access-Control-Allow-Origin Bedarf genannt URL zu setzen, wie in PHP-Server-Side-Code unten gearbeitet Form für gleiches Problem „Ein Platzhalter '*' ....

//CROS/enable cookie saving on remote 
if(isset($_SERVER['HTTP_ORIGIN'])){ 
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); 
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"); 
    header("Access-Control-Allow-Credentials: true"); 
    header("Access-Control-Allow-Methods: GET"); 
}