IE8 не отображает XML, но выдает всплывающее окно с надписью "Хотите сохранить этот файл?"Зачем? - PullRequest
1 голос
/ 14 сентября 2011

Я тестирую службу SOAP, в которой есть одна операция, которая возвращает строку, содержащую документ XML. Мой сервер и клиент реализованы на PHP.

Вот источник для моего клиента:

<?php
header('Content-Type: text/xml, charset=iso-8859-1'); 
header("Content-Disposition: inline");
try{
  $sClient = new SoapClient('http://localhost/soap/test.wsdl');
  $response = $sClient->getDocument();
  echo($response);
} catch(SoapFault $e){
   var_dump($e);
}
?>

И это XML, возвращенный службой SOAP и отраженный клиентом:

<?xml version="1.0" encoding="iso-8859-1" ?>
<root>
<form formname="test">
   <post postid="2000" userid="bbh" postdate="2011-09-14" posttime="11:03:32">
      <item name="Item1" value="123" />
      <item name="Item2" value="456" />
   </post>
</form>
</root>

Когда я тестирую клиента SOAP в Firefox для Mac, Firefox для Windows и Safari, XML, возвращенный службой SOAP, правильно отображается в этих браузерах. Однако, когда я тестирую его на IE7 (на Windows 2003 Server), я получаю пустой экран, даже если я вижу XML, если я делаю просмотр источника на странице. Когда я тестирую его в IE8 (в Windows 7), я получаю всплывающее окно с надписью «Хотите сохранить этот файл или найти программу в Интернете для его загрузки?».

Кто-нибудь знает, почему XML не отображается правильно в IE7 и IE8?

UPDATE:

Вот HTTP-заголовки, которые я получил от Live HTTP-заголовков в Firefox:

http://localhost/soap/testclient.php

GET /soap/testclient.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0.1) Gecko/20100101 Firefox/5.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Connection: keep-alive
Cookie: PHPSESSID=bo6dlobivah1iaeu6d53vt9s10
Cache-Control: max-age=0
HTTP/1.1 200 OK
Connection: close

Date: Wed, 14 Sep 2011 11:09:57 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET, PHP/5.2.1
Content-Type: text/xml, charset=iso-8859-1

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Полагаю, это встроенное действие по умолчанию для типа mime XML.Вы можете попробовать комментировать заголовок типа содержимого или изменить тип mime на text / html.Не очень хорошо, но мог бы добиться цели.

0 голосов
/ 30 ноября 2011

Не уверен, поможет ли это, но объявление заголовка кажется неправильным

Согласно http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html вы должны использовать a;вместо a, чтобы разделить тип контента и кодировку:

заголовок ('Content-Type: text / xml; charset = iso-8859-1');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...