can headers modify other parts of the message?

There has been some discussion lately of issues regarding the
execution model, trailers, etc.  I would like to point out another
area of the model which may need some more thinking.

Every once in a while we use compression and encryption as examples of
things we might want an intermediary to do.  As I have tried to
formulate these use cases, the model looks problematic to me.  Let's
just try something really simple, like having intermediaries compress
and then decompress another part of the message.  The most likely part
we might want to compress wwuld be some element inside the body block.
Let's also assume that the compression is kept in an XML-friendly
representation.  For example,


<SOAP-ENV:Envelope
          xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
    <c:CompressElementInBody
       xmlns:c="some-compression-ns-uri"
       SOAP-ENV:actor="some-uri-matching-an-actor-that-can-do-compression"
       href="#some-id"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <x:DoStuff xmlns:x="some-ns-uri">
      <x:BigData id="some-id">
        <!-- prodigious amounts of highly compressible data -->
        ...
      </x:BigData>
    </x:DoStuff>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


When processed by an appropriate "compression" actor, you might get,

<SOAP-ENV:Envelope
          xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
    <c:DeCompressElementInBody
       xmlns:c="some-compression-ns-uri"
       SOAP-ENV:actor="some-uri-matching-an-actor-that-can-do-decompression/"
       href="#some-id"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <x:DoStuff xmlns:x="some-ns-uri">
      <x:BigData id="some-id">
        <!-- the compressed data -->
        ...
      </x:BigData>
    </x:DoStuff>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


When processed again by an appropriate "decompression" actor, you might get:

<SOAP-ENV:Envelope
          xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <x:DoStuff xmlns:x="some-ns-uri">
      <x:BigData id="some-id">
        <!-- prodigious amounts of highly compressible data -->
        ...
      </x:BigData>
    </x:DoStuff>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Does SOAP allow this sort of behavior?

Can a header rewrite other blocks (header or body entries) that are
targeted at other actors?

The SOAP processing algorithm specifies that a header entry gets
removed as it is processed and that it can insert other header
entries, but can it remove, modify or insert other parts of the
message?

We have been suggesting that trailers can be added, but perhaps not
deleted.  Can a header modify or delete other headers that are not
targeted at the same node that processes it?

Can the body be modified by an intermediary?
If not, how would the compression example be managed?

--mark


Mark A. Jones
AT&T Labs - Research
Shannon Laboratory
Room A201
180 Park Ave.
Florham Park, NJ  07932-0971

email: jones@research.att.com
phone: (973) 360-8326
  fax: (973) 360-8970

Received on Thursday, 14 June 2001 16:21:52 UTC