Newsgroup: it.comp.lang.javascript
Titolo: Ajax ed Internet Explorer : Autorizzazione negata

Salve a tutti,
ho un piccolo (non proprio piccolo.. ndr) problema con ajax.
Sto creando un'applicazione abbastanza complessa che tra le altre cose
fa il parsing di un catalogo di prodotti e li invia uno ad uno ad uno
script php che crea la query al database MySQL.
Chiarisco.
Client-side Javascript:
c1 ~ riceve il catalogo dei prodotti da un certo Url in formato CSV
c2 ~ fa un parsing grossolano (separa i prodotti)
c3 ~ invia (uno ad uno) i prodotti ancora in formato csv ad uno script
php
Server-side PHP:
s1 ~ crea la query per caricare il prodotto sul DB
Il mio problema sta in c3.
Quando lo script ajax arriva al 199-esimo prodotto si blocca ed
Explorer visualizza l'errore "Autorizzazione negata".
La domanda che mi viene da pormi è "Explorer forse non consente di
fare più di 200 richieste dalla stessa pagina?"
Se avete la soluzione, o potete confermare la mia teoria, vi prego di
rispondermi.
Grazie
Saluti

mh posta le 2 righe di codice che usi per fare la richiesta che ci dò
un occhio..
in alternatuva prova a inviare un unico pacchetto in array..se è
tecnicamente possibile
pian...@gmail.com
 ha scritto:


La funzione è questa :
(scusate per il codice-spaghetti, ma lo sto continuando a cambiare per
trovare una soluzione)
function parse_file(text,el) {
var i;
var status = "ERRORE INDEFINITO!";
// qui divido il file (ogni porodotti sta su una riga)
textarr = text.split('\n');
var len = textarr.length;
// la s_ non sta per secure ma solo per distinguerlo da un'altro
var s_http_request;
var errnum = 0 ;
	   // SOLITA PROCEDURA AJAX
	    s_http_request = assegnaXMLHttpRequest();
	    if (!s_http_request) alert("Errore s_http_request");
			s_http_request.onreadystatechange = function()
			 {
				if(s_http_request.readyState === 4) {
				if(s_http_request.status == 200){
				  status = s_http_request.responseText;
				  }
				else status = 'errore';
		  		if (status!="OK") {
 				  el.innerHTML += 'ERRORE';
				  errnum++;
				  }
				else
				  el.innerHTML += 'TUTTO OK';
				richiedi();
				}
			}
		// CONTROLLO SE L'ARRAY E' FINITO,
                //ALTRIMENTI FACCIO UN'ALTRA RICHIESTA
	 	i = i+1;
		if (i < len)
			{
			s_http_request.open('POST', 'xxxxx.php',true);
			s_http_request.send(null);
			}
		 else alert("Fine. Sono stati riscontrati "+errnum+" errori.");
i = -1 ;
richiedi ();
}

 php
Premesso che non mi sembra una cosa da fare (mi riferisco a 200 chiamate)
prima dovresti isolare il problema. Tramite un po' di sana analisi:
- Esattamente a che riga viene generato l'errore "Autorizzazione Negata"? In
concomitanza a QUALE statement js?
- E' un problema del client o del server?
(test: cambiare server; cambiare linguaggio server side; cambiare tipo di
risposta data alle suddette chiamate)
- Capita sempre al 199esimo prodotto, a prescindere da quale esso sia?
(test: invertire l'ordine dei prodotti, e verificare)
- Capita sempre alla 199esima richiesta HTTP tramite XmlHttpRequest, a
prescindere dalla natura della richiesta?
(test: fare 200 chiamate http con dati "fuffa", in modo diverso da quanto
viene attualmente fatto)
Queste le prime cose che mi vengono in mente. Se hai già dato risposta a
queste e altre domande, rendici partecipi in modo da avere un quadro più
completo della situazione.
-- 
~ "Con quanti nomi puoi chiamare Dio? Puoi chiamarlo, se vuoi, in mille
maniere:
Dio, Visnu, Ugo, Krisna, Giove, Allah... Tanto... non ti risponde."
(Corrado Guzzanti)

 viene attualmente fatto)
Eh no.. adesso ho fatto 284 richieste e sono andate tutte a buon fine,
sia con FF che con IE

 possibile attacco nelle 200 richieste fatte in un tempo molto breve?
Mi sembra strano, ma non non è una cosa da scartare a priori; per questo ti
avevo suggerito di cambiare server e/o linguaggio server side.
I vari step servivano ad isolare il problema, e capirne poi la ragione. 
-- 
~ "Non esiste guerra tanto crudele da non sparire appena si smette di
parlarne."
(Stefano Benni - "Spiriti")

Il problema è che ho dovuto cambiare connessione internet perchè non
sono a casa durante la settimana, e inoltre il catalogo non lo creo io,
ma è un catalogo di tradedoubler che quindi varia continuamente.
Spero di non aver più problemi, grazie per l'aiuto