2016-03-23 21 views
7

Sto provando a scaricare un file utilizzando la web API + Angularjs e funziona bene, tuttavia sto inviando "content-disposition" nell'intestazione dall'API web ma non riesco ad accedervi nell'header della risposta.Non è possibile ottenere content-disposition dall'intestazione http.get?

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;    
} 

lato client (AngularJs):

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

Nell'intestazione sto ottenendo i seguenti valori, ma sono in grado di ottenere Content-Disposition. Per favore correggimi dove ho sbagliato?

enter image description here

risposta

7

Credo che si sta tentando di colpirlo da localhost mentre il file è ospitato sul server, in questo caso chiedete al vostro team di server per consentire, Access-Control-Expose-intestazioni ('Content-Disposition '). Con questa intestazione, intestazioni personalizzate come COntent-Disposition saranno accessibili a te attraverso il dominio incrociato

+0

Ecco come farlo su un back-end di binari: http://jaketrent.com/post/expose-http-headers-in- cors / –