Closed Bug 282698 Opened 20 years ago Closed 19 years ago

use application/soap+xml in nsHTTPSOAPTransport

Categories

(Core Graveyard :: Web Services, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: annevk, Assigned: annevk)

References

Details

Attachments

(2 obsolete files)

It has been defined here:
 <http://www.faqs.org/rfcs/rfc3902>

It acts similar to application/xml which means that the default charset if it
has not been specified is UTF-8.

CC'ing people from bug 244717 to make sure they are all ok with the upcoming patch.

This patch also changes text/xml to application/xml within the soap directory.
Attached patch patch #1 (obsolete) — Splinter Review
Attachment #174670 - Flags: superreview?(jst)
Attachment #174670 - Flags: review?(jst)
Will servers accept application/soap+xml?  Please test your patch with existing
SOAP testcases to make sure we don't break.
Attachment #174670 - Flags: superreview?(jst)
Attachment #174670 - Flags: review?(jst)
Also, you can only legally do this for SOAP 1.2 messages.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode
xsi:type="xsd:string">SOAP-ENV:Client</faultcode><faultstring
xsi:type="xsd:string">Content-Type must be 'text/xml' instead of
'application/soap+xml'</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

From: http://mozilla.org/projects/webservices/examples/babelfish-wsdl/index.html
Which is xmethods.net.


Hmm... does it really mean text/xml, or will application/xml do?  The problem is
 that you can't send non-ASCII data with text/xml over HTTP, per spec.
Most toolkits send "text/xml; charset=UTF-8". This is exactly what we do (post
bug 244717) and it seems to work well enough. 

This is what SOAP 1.1 has to say:
http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383526

This is what SOAP 1.2 has to say:
http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#httpmediatype

In Doron's example, webmethods.net is clearly talking SOAP 1.1 (note the
namespace of the message envelope) so the server has some justification in
complaining.

I would support a patch that makes us DTRT for SOAP 1.2 (I wrote the comment
that Anne is removing in the patch above). But I think that changing anything
(even to application/xml) for SOAP 1.1 is risky since there are too many old
servers still around.
Ah, ok.  If we're sending an explicit charset param, that's different.
That the charset is UTF-8 is not made explicit everywhere. Should SOAP use
"text/xml;charset=utf-8" everywhere or only on some places? Since eventually
"text/xml" over HTTP is going to mean that the file is encoded in US-ASCII as
far as Gecko is concerned I guess some changes have to be made.

(The "application/soap+xml" thing can wait.)
Blocks: 247024
> That the charset is UTF-8 is not made explicit everywhere. Should SOAP use
> "text/xml;charset=utf-8" everywhere or only on some places? 

Everywhere for outgoing requests... But don't we do that already? Do you also
want to change the OverrideMimeType stuff that you did in your original patch? I
would be nervous about anything that makes handling of incoming data
stricter.(Postel's law etc. etc.)

I'd rather see a patch first and consider each change on its own merit.
(In reply to comment #9)
> Everywhere for outgoing requests... But don't we do that already? Do you also
> want to change the OverrideMimeType stuff that you did in your original patch? I
> would be nervous about anything that makes handling of incoming data
> stricter.(Postel's law etc. etc.)

Perhaps we should change incoming data to application/xml. That would make us
less strict and probably more compliant. Perhaps changing everything to
application/xml except for the "text/xml; charset=UTF-8" case would be the best
thing.
Attached patch patch #2 (obsolete) — Splinter Review
Patch to match what I described. Note that with text/xml you can only overwrite
the default charset using the 'charset' parameter of the 'contet-type' header,
but with application/xml the XML file itself can do that as well by including a
BOM and/or XML declaration.

Therefore application/xml is a better choice.
Attachment #174670 - Attachment is obsolete: true
Can someone comment on patch #2? It seems like the right thing to do.
Comment on attachment 177473 [details] [diff] [review]
patch #2

r=doron, I tested several examples and they worked fine with this.
Attachment #177473 - Flags: review+
Attachment #177473 - Flags: superreview?(jst)
Comment on attachment 177473 [details] [diff] [review]
patch #2

sr=jst
Attachment #177473 - Flags: superreview?(jst) → superreview+
Comment on attachment 177473 [details] [diff] [review]
patch #2

mozilla/extensions/webservices/soap/tests/soapsuccess.cgi	1.2
mozilla/extensions/webservices/soap/tests/soapfault.cgi 	1.2
mozilla/extensions/webservices/soap/src/nsSOAPMessage.cpp	1.40
mozilla/extensions/webservices/soap/src/nsHTTPSOAPTransport.cpp 	1.50
Attachment #177473 - Attachment is obsolete: true
I'm marking this FIXED as we are no longer using text/xml without a charset
parameter in the soap directory. If someone really wants application/soap+xml
that should be a separate bug. Although they should take this comments from
doron into account I guess:

doron	anne: sure, close it
doron	anne: soap+xml breaks too much
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: