2013-10-13 18 views
7

Ho una domanda per quanto riguarda CORS richieste con intestazione di autorizzazione HTTP:AngularJS e tra domini POST

Mi sembra che il browser web non è l'invio di intestazione di autorizzazione con richiesta POST, non v'è alcun modo per aggirare questo?

Ecco il mio codice angolare:

var app = angular.module('app', []) 
    .config(['$httpProvider', function($httpProvider) { 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    }]); 

    app.controller('ctrl', function ($scope, $http) { 
     $scope.insert = function() { 

      $http.post('http://my.api.com/Insert', 
       { 
        headers: { 
         'Authorization': 'Basic dGVzdDp0ZXN0', 
         'Content-Type': 'application/x-www-form-urlencoded' 
        }, 
        data: { 
         'Code': 'test data' 
        }, 
        withCredentials: true 
       }); 
     }; 
    }); 

Sul lato server ho questo nel mio web.config

<httpProtocol > 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With" /> 
    <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" /> 
    <add name="Access-Control-Allow-Credentials" value="true" /> 
    </customHeaders> 
</httpProtocol> 
+0

ha u trovare una soluzione per questo? –

risposta

11

Si sta utilizzando il $http.post in modo errato. Il secondo parametro è il dati che è necessario inviare al server, non è possibile impostare intestazioni come questa. Nel tuo caso, invierà l'intero oggetto come JSON payload

Prova questo:

$http({ 
     url:'http://my.api.com/Insert', 
     method:"POST", 
     headers: { 
        'Authorization': 'Basic dGVzdDp0ZXN0', 
        'Content-Type': 'application/x-www-form-urlencoded' 
     }, 
     data: { 
       'Code': 'test data' 
     } 
    }); 
+0

Ecco, grazie! Un'altra cosa che ho dovuto risolvere è che non puoi usare con Crredentials: true se disponi di Access-Control-Allow-Origin: * – aron

+0

@aron: grazie, aggiornato. –

+0

nel mio caso non ha funzionato; –

0

withCredentials - {} booleane - se per impostare il flag withCredentials sulla Oggetto XHR. Vedi le richieste con credenziali per ulteriori informazioni.

+0

L'ho provato, non aiuta – aron

Problemi correlati