2016-03-23 4 views
7

Ich versuche, eine Datei mit Web-API + Angularjs herunterladen und es funktioniert gut, aber ich sende "Content-Disposition" in der Kopfzeile von der Web-API, aber ich kann nicht in der Antwort-Header zugreifen.Kann nicht Content-Disposition von http.get-Header abrufen?

WebAPI:

[HttpGet] 
[AllowCrossSiteJson] 
public HttpResponseMessage GetAcquisitionsTemplate() 
{ 
    var docContent = _d.FirstOrDefault(); 
    Stream stream = new MemoryStream(docContent.Content); 
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); 
    string contentDisposition = string.Concat("attachment; filename=", docContent.Name.Replace(" ", String.Empty), "." + docContent.Extension); 
    result.Content = new StreamContent(stream); 
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");  
    result.Content.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse(contentDisposition); 
    return result;    
} 

Client Side (AngularJS):

$http.get(url)success(function (data, status, headers) { 
    var header= headers(); 
}) 

Im Kopf bin ich folgende Werte bekommen, aber ich bin nicht in der Lage Content-Disposition zu bekommen. Bitte korrigieren Sie mich, wo ich falsch liege?

enter image description here

Antwort

7

Ich glaube, Sie versuchen, es von localhost zu schlagen, während die Datei auf dem Server gehostet wird, in diesem Fall der Server-Team fragen zu ermöglichen, Access-Control-Expose-Header ("Content-Disposition '). Mit diesem Header können Sie auf benutzerdefinierte Header wie COntent-Disposition über Cross-Domain zugreifen

+0

Dies ist, wie Sie es auf einem Rails-Backend tun: http://jaketrent.com/post/expose-http-headers-in- Kors –

Verwandte Themen