7

Ich verwende jQuery Fileupload, um Dateien hochzuladen. Es sendet keine Header, die ich auf den Server gesetzt habe. Warum ist die Autorisierung Header nur in IE fehlt aber in Chrom übergeben? HierJquery-Datei-Upload - Header in IE9 nicht senden

ist der Code:

upload_photo: function(){ 
    var url = '/api/v1/upload'; 
    $('#photoupload').fileupload({ 
     url: url, 
     dataType: 'json', 
     paramName: 'uploadFile', 
     beforeSend: function (xhr) { 
      setHeader(xhr); 
      $("#check_progress").html('true'); 
     },      
     done: function (e, responseJSON) { 
      var id = responseJSON.result.id; 
      url = responseJSON.result.url; 
      var photo_ids = $("#photo_ids"); 
      var val = photo_ids.val(); 
      photo_ids.val(val + id.toString() + ","); 
      $(".photothumb-wapper").append('<div class=\"photothumb\" id="post_photo_'+id+'"><div><img src=\"'+url+'\" /></div><img class=\"thumb-delete photo_delete\" id=\"'+id+'\" title=\"Remove\" src=\"/assets/delete-red.png\"></div>'); 
      $("#check_progress").html(""); 
     }, 
     start: function (e, data) { 
      $(".photothumb-wapper").append('<div class="photothumb photoprogress" style="border:none"><img src="/assets/ajax-loader.gif" /></div>'); 
     }, 
     always: function (e, data) { 
      $(".photoprogress").remove(); 
     } 
    }); 
} 

var setHeader = function (xhr) { 
    xhr.setRequestHeader('Authorization', 'Bearer fdf49c4f1cfgc176eb952f18eeefaec3e7'); 
}; 

Header in IE bestanden:

Request    : POST /api/v1/upload HTTP/1.1 
Accept    : text/html, application/xhtml+xml, \*/\* 
Referer    : url 
Accept-Language  : en-US 
User-Agent   :Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) 
Content-Type  :multipart/form-data; boundary=---------------------------7de2dfe037204f6 
Accept-Encoding  :gzip, deflate 
Host    :url 
Content-Length  :776595 
DNT     :1 
Connection   :Keep-Alive 
Cache-Control  :no-cache  
Cookie    :sitecookies 

Header in Chrome übergeben:

ResponseHeaders 
    date : Tue, 04 Mar 2014 07:32:20 GMT 
    Connection: Keep-Alive 
    content-length:225 
    content-type:application/json; charset=utf-8 
    cache-control:no-cache 
RequestHeaders 
    Accept: application/json, text/javascript, \*/\*; q=0.01 
    Authorization: Bearer fdf49c4f1cfgc176eb952f18eeefaec3e7 
    X-Requested-With: XMLHttpRequest 

Warum ist die Authorization Header in IE fehlt ?

+0

Duplikat von http://stackoverflow.com/questions/7686827/how-can-i-add-a-custom-http-header-to-ajax-request-with-js-or-jquery –

+0

@Jibi - Nein, Header manuell zu übergeben, hilft nicht. Noch Autorisierung wird nicht in IE9, wo es funktioniert in IE10, Chrom, FF –

Antwort

4

This beantwortet meine Frage,

Browser nur mit Unterstützung für XHR Datei-Upload-Unterstützung Einstellung benutzerdefinierte Header.

+1

Warum wird diese Antwort abgelehnt? –

+0

Also, Sie konnten überhaupt keine Kopfzeile setzen? Hast du einen Workaround gefunden? Ich habe das gleiche Problem: Alle unsere Anfragen benötigen einen Autorisierungsheader zum Hochladen von Dateien. – darksoulsong

+0

Nein, ich konnte keine Problemumgehung finden –

0

Als Workaround in alten Browsern wie unserem lieben IE, könnten Sie ein Cookie mit dem Authentifizierungstoken setzen, wenn der Benutzer sich authentifizieren und dann auf dem Server holen und es genauso verifizieren, wie Sie den Header verifizieren. Ich weiß, dass es nicht die eleganteste Lösung ist, aber es funktioniert.