Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.12.2009, 16:53
Новичок на форуме
Отправить личное сообщение для VasiliyLuka Посмотреть профиль Найти все сообщения от VasiliyLuka
 
Регистрация: 12.12.2009
Сообщений: 1

При отправке POST-запроса в заголовке к серверу вместо POST указывается OPTIONS
Сразу оговорюсь, что выполняю кросс-доменный запрос. Использую Mozilla 3.5.5. Там это реализовано.

Задача отправить на сервер XML данные.

Самое интересное, когда формируешь запрос с того же самого домена, все в порядке, когда с другого - код не работает.

ЗАГОЛОВКИ ПРИ РАБОЧЕЙ ОТПРАВКЕ (с того же адреса)
http://a.b.c:8080/index.htm

POST /index.htm HTTP/1.1
Host: a.b.c:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: text/xml; charset=UTF-8
Referer: http://a.b.c/sendform.htm
Content-Length: 143
Cookie: CONTENT=1; LANG=ru
Pragma: no-cache
Cache-Control: no-cache
<?xml version="1.0" encoding="UTF-8"?>...

HTTP/1.x 200 OK
Server: (сервер)
Connection: Keep-Alive
Content-Type: text/xml
Access-Control-Allow-Origin: *
Content-Length: 228
...(продолжение ответа)
ПРИ ОТПРАВКЕ СДРУГОГО АДРЕСА ВОТ ТАКИЕ ЗАГОЛОВКИ
http://a.b.c:8080/index.htm

OPTIONS /index.htm HTTP/1.1
Host: a.b.c:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: http://anotherdomain
Access-Control-Request-Method: POST

HTTP/1.x 200 OK (тут конец)
Может, проблема и в другом, но почему меняется POST на OPTIONS? А если проблема в другом, то в чем?

Код стандартный для спецификации XMLHttpRequest 2.

<script language="javascript">
var request = false;
var url = "http://a.b.c:8080/index.htm";
if (window.XMLHttpRequest) {
	request = new XMLHttpRequest();
} else if(window.XDomainRequest) {
	request = new window.XDomainRequest;
}
	
if (request.overrideMimeType) {
	request.overrideMimeType('text/xml');
}

...

function getsid(){
	var postxml = '<?xml version="1.0" encoding="UTF-8"?>...';
	request.onreadystatechange = function() {getanswer(request)};
	request.open('POST', url, true);
	request.setRequestHeader("Content-Type", "text/xml"); 
	request.setRequestHeader("Content-Length", postxml.length);
	request.setRequestHeader("Connection", "close");
	request.send(postxml);
}

...

function getanswer(request) {
	if (request.readyState == 4) {
		if (request.status == 200) {
		...
		}
	}
}

getsid();
</script>


Сервер не совсем стандартный там на порт 8080 зацеплена служба, которая анализирует и заносит данные в БД. Но проблема скорее всего не в нем, так как запросы, все-таки, принимаются, хоть и со своего домена.
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2009, 14:57
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Попробуйте почитать здесь
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск