2016-04-10 12 views
3

Ich benutze Angular 2 um JSON von meinem Rails API Server anzufordern. Mein Server ist so eingestellt, dass er mit einem Header X-Total-Count: 10 antwortet. Mein Server sendet erfolgreich diese Header:Wie bekomme ich Angular 2 Response Header

Server Response

Aber wenn ich zu console.log(res.headers) die http-Antwort versuchen, erhalte ich nur ein _headersMap mit Content-Type und Cache-Control:

enter image description here

Hier ist mein Gestell :: Cors config:

config.middleware.insert_before 0, "Rack::Cors" do 
    allow do 
     origins '*' 
     resource '*', headers: :any, methods: [:get, :post, :options, :patch, :delete], expose: ['X-Total-Count'] 
    end 
end 
die Header in dem Controller

Und die Art und Weise Ich gründe:

def index 
    ... 
    @posts = ... 

    response.headers['X-Total-Count'] = '10' 
    response.headers['Access-Control-Allow-Headers'] = 'X-Total-Count' 

    render json: @posts 
    end 

Wie kann ich sicherstellen, dass die X-Total-Count im _headersMap erscheint? Oder, wie kann ich auf die X-Total-Count Wertantwort zugreifen?

Antwort

6

Gefunden das Problem. Obwohl ich den Header über die Rack::Cors-Konfiguration verfügbar machte, funktionierte es nicht, bis ich Änderungen an fix this deprecation vorgenommen habe. Nun stellt die folgende Konfiguration, die in config/initializers/cors.rb eingestellt ist, die Header richtig frei:

1

Laut this bug posted in alpha wird dies dadurch verursacht, dass Ihr Browser bestimmte Header als "unsicher" ansieht und deren Zugriff ablehnt. Das Problem in diesem Thread bestand darin, der Antwort des Servers eine Kopfzeile hinzuzufügen:

access-control-expose-headers: x-total-count 
+0

Kein Glück. Ich füge oben meine Rack Cors-Konfiguration hinzu. Die 'X-Total-Count' wurde veröffentlicht, aber es funktioniert immer noch nicht. –

1

Es ist wegen CORS. Sie können die Kopfzeile nur dann in der Karte sehen, wenn sie von CORS aktiviert wurde.

Ihr Server muss die folgenden in Header zurück:

Access-Control-Allow-Headers: X-Total-Count 
+0

Immer noch kein Glück. Ich habe die 'Rack :: Cors'-Konfiguration gepostet, die ich momentan habe. Müsste es auch nicht "Access-Control-Allow-Headers: X-Total-Count" sein? Ich gab beiden Versionen eine Chance. –

+1

Ist Ihre Anfrage eine einfache oder eine mit Preflight? –

Verwandte Themen