ho definito un $resource
ad un endpoint API che restituisce una risposta contenente diversi headers
ma nella funzione transformResponse
config la maggior parte delle intestazioni mancano dalla argomento headersGetter
funzioni.
Come posso risolvere il problema?
intestazione di risposta delle API
HTTP/1.1 201 Created
Server: Apache-Coyote/1.1
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
x-frame-options: DENY
Access-Control-Allow-Origin: http://localhost:9000
access-control-allow-methods: POST, PUT, GET, DELETE, OPTIONS
access-control-allow-headers: Content-Type
Access-Control-Allow-Credentials: true
Content-Disposition: attachment; filename="testCall.pcap"
FileName: testCall.pcap
Content-Type: application/pcap
s' transformResponse
intestazioni
Pragma: no-cache
Content-Type: application/pcap
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0
app.factory("MyService", function ($resource, ENV, _) {
return {
testCall: $resource(ENV.apiEndpoint + "/test-call", {}, {
launch: {
method: 'POST',
isArray: false,
headers:{'Accept':'application/octet-stream'},
responseType: 'blob',
cache: false,
transformResponse: function(data, headers){
var filename = headers('Content-Disposition'); //headers('FileName')
var contentType = headers('Content-Type');
var file = new Blob([data], {
type: contentType
});
var fileURL = URL.createObjectURL(file);
var a = document.createElement('a');
a.href = fileURL;
a.target = '_blank';
a.download = filename;
document.body.appendChild(a);
a.click();
}
}
}),
searchOptions: $resource(ENV.apiEndpoint + "//search-options")
};
});
Thks per la tua risposta. Sì, è una chiamata CORS su un sottodominio ma le intestazioni di risposta sopra sono quelle ricevute dal server Angular (le ho ricevute con Firebug). Quindi per me penso che _La struttura angolare pulisce alcuni di essi prima di 'transformResponse' ... – gudepier
+1 Man, volevo sapere esattamente questa risposta come un matto, mi sono imbattuto nello stesso problema quando ho provato a leggere il' Location' intestazione dopo aver creato una risorsa in un cross-domain RESTFull Api e prendere l'ID dalla posizione dell'intestazione, aggiungendo l'intestazione sul server ha fatto il trucco! Tks per l'ottima risposta. –
infine, sono riuscito a ottenere il mio token personalizzato. grazie Joe e Adriano. –