2014-05-22 10 views
5

js

was ich versuche zu machen ist REST API REQUEST zum Server zu machen.

Ein Antrag sollte 'GET' -Methode und 'Authorization' Header enthalten.

mein Fabrikcode, die REST-Server kommunizieren, ist wie folgt 'use strict';

angular.module('mabidualApp') 
    .factory('User', function ($resource, config) { 

    return $resource(config.API+':url/:id', { 
     url: '@url', id: '@id' 
    }, { //parameters default 
     auth: { 
     method: 'POST', 
     params: { 
      url: "token", 
     } 
    }, 
     get: { 
     method: 'GET', 
     headers:{'Authorization':'Bearer oLDMYrJD0Qg15Nhv7N-H6w'} , 
     params: { 
      url:"users", 
      id:'me' 
     } 
     } 
}); 

das fitst Problem ist hier

headers:{'Authorization':'Bearer oLDMYrJD0Qg15Nhv7N-H6w'} , 

Wenn ich die Methode Änderungen hinzufügen Header zu 'Optionen' nicht 'GET'. Ich fand heraus, es geht um CORS Preflight etwas, aber ich kann es nicht herausfinden, wie es zu deaktivieren ..

so habe ich versucht, meine Konfiguration in app.js

.config(function($locationProvider, $routeProvider, $httpProvider) { 
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; 
    $httpProvider.defaults.headers.get['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w'; 

das zweite Problem ist hier zu ändern

$httpProvider.defaults.headers.get['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w'; 

Es macht den Fehler unten.

Cannot set property 'Authorization' of undefined 

Gibt es eine Lösung, die eine ‚GET‘ Anfrage mit Kopf ‚Authorization‘ zu schicken? dank

+0

Hier ist eine gute Antwort auf eine andere Frage zu diesem Thema: http://stackoverflow.com/questions/25771062/how-to-pass-headers-on-the-fly-to-resource-for-angularjs – Hinrich

Antwort

0

Ich glaube, Sie verwenden params in der falschen Art und Weise in Ihrer get Anfrage. Versuchen Sie params und Header wie das Schalt:

angular.module('mabidualApp') 
    .factory('User', function ($resource, config) { 

    return $resource(config.API+':url/:id', { 
     url: '@url', id: '@id' 
    }, { //parameters default 
     auth: { 
     method: 'POST', 
     params: { 
      url: "token", 
     } 
    }, 
     get_auth: { 
     method: 'GET', 
     params: { 
      url:"users", 
      id:'me' 
     }, 
     headers: {'Authorization':'Bearer oLDMYrJD0Qg15Nhv7N-H6w'} 
     } 
}); 

Ich änderte Ihre individuelle Anfrage bekommen, weil ‚get‘ bereits durch Winkel definiert werden könnte, aber ich bin mir nicht sicher:

$httpProvider.defaults.headers.get_auth['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w'; 

Außerdem sind Sie Sicher, du brauchst keine anderen Header?

+0

Danke aber das Umschalten von Parametern und Header bringt das gleiche Ergebnis. und ich möchte 'GET' Header nicht benutzerdefinierte Anfrage Header setzen. –

Verwandte Themen