javascript xmlhttprequest - Oggetto http AngularJS $ non mostra tutte le intestazioni dalla risposta




example open (2)

Sto riscontrando un problema con il servizio $ http di AngularJS che non restituisce tutte le intestazioni dall'API che sto interrogando. Ecco cosa ho:

$http({
    method: 'POST',
    withCredentials: true,
    url: 'http://api.mydomain.com/query',
    data: JSON.stringify(parameters)
})
.success(function(data, status, headers, config){
    ... // setting some scope parameters based on data
    console.log(headers());
})

Posso dire attraverso la scheda di rete in Chrome che un numero di intestazioni di risposta viene restituito dall'API (sono particolarmente interessato all'intestazione X-Pagination-Total-Items).

Ecco uno screenshot della scheda di rete dalla richiesta:

Ma l'istruzione console.log sopra (che dovrebbe generare tutte le intestazioni) restituisce solo due:

Qualche idea su cosa sta succedendo? Come posso effettivamente accedere a tutte le intestazioni provenienti dalla chiamata AJAX?

Grazie,

-Nate


Answers

Risulta che l'Access-Control-Expose-Headers non può accettare un carattere jolly. Dovevamo specificare esattamente a quali intestazioni il client doveva avere accesso, e poi ha funzionato.


Tutte le soluzioni fornite fino ad ora rappresentano solo un ridimensionamento una tantum. Hai detto che vuoi essere in grado di ridimensionare l'iFrame dopo che i contenuti sono stati modificati. Per fare ciò, è necessario eseguire una funzione all'interno di iFrame (una volta che i contenuti sono cambiati, è necessario attivare un evento per dire che i contenuti sono cambiati).

Sono rimasto bloccato per un po ', poiché il codice all'interno dell'iFrame sembrava limitato al DOM all'interno dell'iFrame (e non potevo modificare l'iFrame), e il codice eseguito all'esterno dell'iframe era bloccato con il DOM all'esterno dell'iframe (e couldn' t raccogliere un evento proveniente dall'iFrame).

La soluzione è venuta dalla scoperta (tramite l'assistenza di un collega) che a jQuery si può dire quale DOM utilizzare. In questo caso, il DOM della finestra genitore.

In quanto tale, codice come questo fa ciò di cui hai bisogno (quando viene eseguito all'interno di iFrame):

<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery("#IDofControlFiringResizeEvent").click(function () {
            var frame = $('#IDofiframeInMainWindow', window.parent.document);
            var height = jQuery("#IDofContainerInsideiFrame").height();
            frame.height(height + 15);
        });
    });
</script>




javascript ajax angularjs