Я пытаюсь отправить запрос POST в API, который требует XML в тело запроса и ответы с данными XML. API находится в другом домене, поэтому CORS необходимо использовать. IE11 отправляет успешную предварительную проверку CORS. Вот упрощенный тест, который не удается из-за ошибки в Internet Explorer 11 на Windows 7:Ошибка сети в Internet Explorer 11, когда POSTing XML с CORS
SCRIPT7002: XMLHttpRequest: Network Error 0x800c0007, No data is available for the requested resource.
var body = '<?xml version="1.0" encoding="UTF-8"?> '
+ '<Trias version="1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+ ' <ServiceRequest> '
+ ' <siri:RequestTimestamp>2016-06-27T13:34:00</siri:RequestTimestamp> '
+ ' <siri:RequestorRef>EPSa</siri:RequestorRef> '
+ ' <RequestPayload> '
+ ' <StopEventRequest> '
+ ' <Location> '
+ ' <LocationRef> '
+ ' <StopPointRef>8502113</StopPointRef> '
+ ' </LocationRef> '
+ ' <DepArrTime>2017-01-03T10:22:00</DepArrTime>'
+ ' </Location> '
+ ' <Params> '
+ ' <NumberOfResults>1</NumberOfResults> '
+ ' <StopEventType>departure</StopEventType> '
+ ' <IncludePreviousCalls>true</IncludePreviousCalls> '
+ ' <IncludeOnwardCalls>true</IncludeOnwardCalls> '
+ ' <IncludeRealtimeData>true</IncludeRealtimeData> '
+ ' </Params> '
+ ' </StopEventRequest> '
+ ' </RequestPayload> '
+ ' </ServiceRequest> '
+ '</Trias> ';
$(document).ready(function() {
$('button').click(function() {
$.ajax('https://odpch-api.begasoft.ch/trias-stackoverflow', {
method: 'POST',
headers: {
'Content-Type': 'text/xml',
'Authorization': '57c5dadd5e6307000100005e4365c41fa4d946a44ecbd19508fbef64'
},
data: body,
dataType: 'text'
}).done(function(data) {
$('#response').text(data);
});
});
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<button>Ajax</button>
<div id="response"></div>
</body>
</html>
Edit: Запуск из сниппета дают другую ошибку, вот pastebin с полным примером: http://pastebin.com/yTL7mrYF
Предпродажный запрос и сам почтовый запрос видны в инструментах dev. Для запроса POST отображается только заголовок ответа, но тело ответа говорит «Нет данных для просмотра».
Я вижу в Fiddler, что ответ отправляется обратно с сервера, но каким-то образом Internet Explorer не может его отобразить.
Услуга находится за Tyk, программным обеспечением для управления API.
Очевидно, что это работает в Firefox и Chrome.