@WEBIVAN

Как заставить работать CrossDomain Ajax на JQuery в Opera 12?

В хроме и ФФ запросы отлично работают, в Опере 12 ничего не происходит в Dragonfly во вкладке сети запроса не видно. Что делаю не так?

Ниже JS код и заголовки запросов/ответов из инструментов разработчика хрома.
Запрос
$.ajax({
	url: 'index.php?route=checkout/cart/update',
	dataType: 'json',
	xhrFields: {withCredentials: true},
	success: function(json) {
		if (json['output']) {
			$('#cart .content').html(json['output']);
		}
	}
});

Запрос 1
OPTIONS /index.php?route=checkout/cart/update HTTP/1.1
Host: www.domain.com
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://xn----7sbbgbcqbc3abdjei2aoows4amh5j.domain.com
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Access-Control-Request-Headers: accept, x-requested-with
Accept: */*
Referer: http://xn----7sbbgbcqbc3abdjei2aoows4amh5j.domain.com/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2

Ответ 1
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 30 Dec 2013 13:57:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: http://xn----7sbbgbcqbc3abdjei2aoows4amh5j.domain.com
Access-Control-Allow-Credentials: true
ACCESS-CONTROL-ALLOW-METHOD: GET
ACCESS-CONTROL-ALLOW-HEADERS: accept, x-requested-with
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=puf1rjnecsjph77m2qnp4a5rq0; path=/; domain=.domain.com
Set-Cookie: language=Ru; expires=Wed, 29-Jan-2014 13:57:32 GMT; path=/; domain=www.domain.com
Set-Cookie: currency=UAH; expires=Wed, 29-Jan-2014 13:57:32 GMT; path=/; domain=www.domain.com
Content-Encoding: gzip


Запрос 2
GET /index.php?route=checkout/cart/update HTTP/1.1
Host: www.domain.com
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://xn----7sbbgbcqbc3abdjei2aoows4amh5j.domain.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Referer: http://xn----7sbbgbcqbc3abdjei2aoows4amh5j.domain.com/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2
Cookie: PHPSESSID=g7av0357s4ha27bakhmce2m7v5; language=Ru; currency=UAH; display=grid; path=; manufacturer_id=; _ym_visorc=w


Ответ 2
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 30 Dec 2013 13:57:59 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: http://xn----7sbbgbcqbc3abdjei2aoows4amh5j.domain.com
Access-Control-Allow-Credentials: true
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
  • Вопрос задан
  • 7374 просмотра
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Последний раз, когда я сталкивался с Оперой 12 и кросс-доменными запросами, заработало только через JSONP.
spoiler
И вообще у меня ощущение, что CORS там еще не поддерживался…
Ответ написан
@duke_pro
После долгоко копания заработало с Оперой 12 (с более новыми и так всё работало)
вот мой ответ на options
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Methods:GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Origin:http://mydomain.ru
Access-Control-Max-Age:1728000
Connection:keep-alive
Content-Length:0
Content-Type:application/json
Date:Fri, 14 Feb 2014 16:01:04 GMT
Server:nginx/1.4.4


в моём случае виноват был статус 204 (опере почему-то нужно непременно 200)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы