Caricamento del file jQuery blueim e httphandler: nessun file e sempre "opzioni" httpmethod
-
27-10-2019 - |
Domanda
Sto lottando a far funzionare il file-uploader BlueImp JQuery che lavora su MVC 3 con IIS 7.5 su Windows Server 2008 R2. Sto usando un httphandler per gestire il caricamento, che viene chiamato. Ma HttPhandler non riceve mai un file né il "post" o "put", sempre "Opzioni". Qualcuno ha un'idea di cosa va male qui?
L'unico messaggio che ricevo sul fallback dal caricatore è "errore".
Ecco il mio js:
$('#fileupload').fileupload(
{
acceptFileTypes: /(\.|\/)(pdf)$/i,
fail: function (e, data) {
alert("Error: " + data.errorThrown + " Text-Status: " + data.textStatus);
// data.jqXHR;
},
maxNumberOfFiles: 1
/*add: function (e, data) {
data.formData = [{ name: "name1", value: "1" }, { name: "name2", value: "2"}];
data.submit();
},
submit: function (e, data) {
//data.formData = [{ name: "name1", value: "1" }, { name: "name2", value: "2"}];
}*/
}
);
Grazie mille per qualsiasi aiuto!
Soluzione
Va bene l'aggiunta di un codice ha fatto il trucco:
Lato server:
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://example.net");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");
Dalla parte del cliente:
$('#fileupload').fileupload(
{
xhrFields: {
withCredentials: true
}
}
Altri suggerimenti
Quando la pagina viene servita da Domain1.com e stai cercando di caricare su Domain2.com. La tua richiesta di post HTTP è prefligsata.
Il tuo domain2.com dovrebbe effettivamente consentire a Domain1.com di caricare un file. Su server diverso esiste un meccanismo diverso per farlo.
Basta leggere come impostare "Access-Control-Nature-Origin" per il tuo server che è IIS in questo caso.
Per Amazon S3, è abbastanza semplice che abbiano una politica XML che devi aggiornare per questo.