jQuery форма после междоменного домена Amazon S3, т. е. < 10, ошибка "прервана"

Привет, кто-нибудь знает, как публиковать междоменные формы для нескольких доменов в Amazon S3 (например) в IE 8, 9?

Мы использовали плагин форм jQuery. Может быть, он не поддерживает объект XDomainRequest? JQuery формирует неправильный путь?

Мы настроили корзину Amazon S3, чтобы разрешить origin * для отправки, получения и, таким образом, работу во всех других браузерах, даже в IE 10.

Начинается размещение. Из того, что я могу сказать, он отображает сообщение о статусе публикации против амазонского URL, который отображается слева в браузере. Но затем он вызывает функцию возврата ошибки (указанную в опциях ajax) со статусом "aborted". Ничего больше. Похоже, запрос отменен. Файл никогда не дойдет до Amazon, если ошибка придет с Amazon, я думаю, она будет немного более подробной.

Я также пытался отправлять сообщения с https (как кто-то предлагал, поскольку URL-адрес загрузки Amazon использует https). Нет разницы.

Есть идеи?

/ John

1 ответ

Ваше подозрение верно - ваш плагин не будет поддерживать XDomainRequest, потому что он основан на jQuery.

JQuery не включает поддержку XDR:

Краткое описание проблемы XDomainRequest:

  • jQuery не включает поддержку XDomainRequest, поскольку существует множество серьезных ограничений для XDR.

IE версии 10 поддерживает CORS, но предыдущие версии не поддерживают XDR:

MSHTML / Trident 6.0 (Internet Explorer 10) имеет встроенную поддержку. MSHTML/Trident 4.0 и 5.0 (Internet Explorer 8 и 9) обеспечивает частичную поддержку через объект XDomainRequest.


Вы можете попробовать добавить этот плагин jQuery на свой сайт, чтобы посмотреть, решит ли он вашу проблему. Из README:

Плагин jQuery, который прозрачно добавляет Cross Origin Resource Sharing (CORS) среди браузеров, включая IE8+


РЕДАКТИРОВАТЬ: Если это не сработает, вы можете добавить следующий фрагмент, который пытается такую ​​же модификацию:

  if ('XDomainRequest' in window && window.XDomainRequest !== null) {

  // override default jQuery transport
  jQuery.ajaxSettings.xhr = function() {
      try { return new XDomainRequest(); }
      catch(e) { }
  };

  // also, override the support check
  jQuery.support.cors = true;

}
Другие вопросы по тегам