Разрешает ли конверт SOAP DOCTYPE? - PullRequest
0 голосов
/ 06 сентября 2018

У меня на самом деле есть мыльный конверт, как указано ниже. Запустив его через POSTMAN или SOAP UI, я получаю желаемый результат. Однако при добавлении DOCTYPE он выдаёт мне 400 Bad Request . Ниже приведен xml

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE doc 
[<!ENTITY win SYSTEM \"file:///C:/Users/user/Documents/testdata2.txt\">]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:koh="http://kohls.com/">
<soapenv:Header/>
<soapenv:Body>
  <Process>
  <doc>&win;</doc>
     <!--Optional:-->
     <webEnvelope>                       
        <TraceEvents/>
        <Properties>
           <PropertyTO Name="Assembly" Value="IS.XS.Rf.Mls"/>
           <PropertyTO Name="Type" Value="IS.XS.Rf.Mls.MlsRequestMessage"/>
        </Properties>
        <Pipeline>MlsMessagePipeline</Pipeline>
        <TargetService>RfPriceChanges</TargetService>
        <TargetTransaction>GetClearanceTicketLocations</TargetTransaction>
     </webEnvelope>
  </Process>
</soapenv:Body>
</soapenv:Envelope>

Если я удаляю DOCTYPE и поддерживающий его тег из xml, он успешно запускается с кодом состояния 200. Также по URL: https://salesforce.stackexchange.com/questions/171003/soap-message-must-not-contain-a-document-type-declarationdtd

говорит, что DOCTYPE больше не поддерживается мыльным конвертом. Также я проверил документ SOAP, но не нашел ничего, что связано с использованием DTD. Я что-то пропустил? Любая помощь приветствуется

1 Ответ

0 голосов
/ 07 сентября 2018

Базовый профиль WS-I специально запрещает DTD в конвертах SOAP:

3.2.3 Запрещенные конструкции

XML DTD и PI могут создавать уязвимости безопасностиобработка накладных расходов и семантической неоднозначности при использовании в конвертах.В результате некоторые XML-конструкции запрещены разделом 5 SOAP 1.2.

Хотя опубликованные опечатки NE05 (см. http://www.w3.org/XML/xml-names-19990114-errata) позволяют отображать объявление пространства имен xmlns: xml = "http://www.w3.org/XML/1998/namespace",некоторые старые процессоры считали такое объявление ошибкой. Эти требования гарантируют, что совместимые артефакты имеют максимально возможную совместимость.

R1008 ОБОЛОЧКА НЕ ДОЛЖНА содержать декларацию типа документа.R1009 ОБОЛОЧКА НЕ ДОЛЖНА содержать Инструкции по обработке. ОСНОВНОЕ ТЕСТАБЛИКОЕ BP1208

R1033 ОБОЛОЧКА НЕ ДОЛЖНА содержать декларацию пространства имен xmlns: xml = "http://www.w3.org/XML/1998/namespace". ОСНОВНОЕ ИСПЫТАТЕЛЬНОЕ BP1033

Если вам нужнок, вы можете проверить соответствие WS-I в soapUI и встроить его в свои утверждения.

...