SOAP信封是否允许DOCTYPE?

时间:2018-09-06 05:23:55

标签: xml soap soapui

我实际上有一个肥皂袋,如下所述。通过POSTMAN或SOAP UI运行它时,我得到了所需的结果。但是,添加DOCTYPE会给我 400错误的请求。下面是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>

如果我从xml中删除DOCTYPE及其支持标记,它将以200状态代码成功运行。另外,根据网址:https://salesforce.stackexchange.com/questions/171003/soap-message-must-not-contain-a-document-type-declarationdtd

它说SOAP信封不再支持DOCTYPE。另外,我检查了SOAP Doc,但是没有发现与DTD使用有关的任何内容。我想念什么吗?感谢您的帮助

1 个答案:

答案 0 :(得分:0)

WS-I Basic Profile特别拒绝SOAP信封中的DTD:

  

3.2.3不允许的构造

     

XML DTD和PI可能会引入安全漏洞,处理   在信封中使用时会产生开销和语义歧义。结果是,   SOAP 1.2的第5部分禁止使用某些XML构造。

     

尽管已发布勘误NE05(请参见   http://www.w3.org/XML/xml-names-19990114-errata)允许名称空间   声明xmlns:xml =“ http://www.w3.org/XML/1998/namespace”到   看起来,一些较旧的处理器认为这样的声明是   错误。这些要求确保符合标准的工件具有   尽可能广泛的互操作性。

     

R1008信封不得包含文档类型声明。核心   可测试的BP1007

     

R1009信封不得包含处理指令。核心   可测试的BP1208

     

R1033信封不得包含名称空间声明   xmlns:xml =“ http://www.w3.org/XML/1998/namespace”。核心测试表BP1033

如果需要,可以在soapUI中check WS-I compliance并将其构建到断言中。