У меня есть прокси, который загружает огонь на сервер Amazon S3. Этот прокси создан с использованием NodeJS, а моя веб-страница размещена на сервере Tomcat. Поэтому, чтобы сделать Xhr-загрузку, мне пришлось использовать Nginx для решения междоменных проблем, так как оба сервера находятся на одной машине.
Но использование Nginx имеет много проблем, поэтому мой босс спросил, могу ли я сделать то же самое, используя междоменную политику. Я сделал это, но это то, что я не в состоянии сделать. Вот мой код:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(e) {};
xhr.open('POST', self.basePath + '/upload' + file.name, true, null, null, null, true, true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("Connection", "close");
xhr.sendAsBinary(file.getAsBinary());
Это работает для междоменного запроса, достигающего сервера с файлом и возвращающего ответ, но когда я пытаюсь установить событие прогресса, например:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(e) {};
xhr.upload.onprogress = function(){console.info('on progress');};
xhr.open('POST', self.basePath + '/upload' + file.name, true, null, null, null, true, true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("Connection", "close");
xhr.sendAsBinary(file.getAsBinary());
Междоменный запрос не запускается (запрос использует метод «OPTIONS» вместо POST и никогда не достигает сервера). Но, как вы можете подумать, мне нужно событие прогресса, чтобы показать его пользователю. Кто-нибудь знает, что происходит ??
Ps: Все вышеприведенные коды отлично работают по запросу "тот же домен".
Ps2: я пробовал xhr.onprogress, но он никогда не запускается (при кросс-запросах или запросах одного домена)
PS3: я пробовал на FF4 + и Chrome 12 +
Большое спасибо.
Тьяго