1

リモート XML サービスのインターフェイスを構築しています。ここに私の $.ajax 関数があります:

this.sendInput = function () {
    jQ.ajax({'url': URL, 
             'type': 'POST', 
             'data': app._CONTENT, 
             'contentType': 'text/xml', 
             'dataType': 'XML', 
             'error': function (data) { app.processError(data); }, 
             'success': function(data){ app._OUTPUT = data; app.processOutput(); }});
};

このリクエストを Chrome でサーバーに送信すると、次のヘッダーを含む 200 レスポンスが返されます。

Accept:application/xml, text/xml, \*/\*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:930
Content-Type:text/xml
Host:host.com
Origin:http://elsewares.org
Pragma:no-cache
Referer:http://blah.org
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17

Firefox 12 で同じリクエストを送信すると、次のリクエスト ヘッダーで 415 エラーが発生します。

Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Access-Control-Request-He...    content-type
Access-Control-Request-Me...    POST
Cache-Control   no-cache
Connection  keep-alive
Host    host.com
Origin  http://host.org
Pragma  no-cache
User-Agent  Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0 FirePHP/0.7.1
x-insight   activate

サーバーは Access-Control-Request-Headers: Content-Type を許可するように設定されているため、POST リクエストの本文を XML として設定できます。

ここでの不一致は何ですか?これが使用される設定で動作するには、Firefox が必須です。

リクエストの本文は次のとおりです。

<?xml version="1.0" encoding="UTF-8" ?>
    <MELTSinput>
        <initialize>
            <SiO2>48.68</SiO2>
            <TiO2>1.01</TiO2>
            <Al2O3>17.64</Al2O3>
            <Fe2O3>0.89</Fe2O3>
            <Cr2O3>0.0425</Cr2O3>
            <FeO>7.59</FeO>
            <MnO>0.00</MnO>
            <MgO>9.10</MgO>
            <NiO>0.0</NiO>
            <CoO>0.0</CoO>
            <CaO>12.45</CaO>
            <Na2O>2.65</Na2O>
            <K2O>0.03</K2O>
            <P2O5>0.08</P2O5>
            <H2O>0.20</H2O>
        </initialize>
        <calculationMode>equilibrate</calculationMode>
        <title>alpha testing</title>
        <constraints>
            <setTP>
                <initialT>1200</initialT>
                <initialP>1000</initialP>
            </setTP>
        </constraints>
    </MELTSinput>
4

2 に答える 2

1

Miroshko が示唆するように、文字セットに関連している可能性がありますが、問題を見つける最も可能性の高い方法は、サーバーを調べることです。そこでエラー ログを監視します。問題の原因について何らかの説明が必要です。おそらく何らかの理由で XML を解析できないため、サーバーはそれXML であると認識していません。

于 2013-03-10T12:42:57.540 に答える
0

Firefox は Content-Type に charset を自動的に追加するため、「text/xml; charset=utf-8」となります。サーバーは単純な比較を行うだけなので、415が得られると思います

于 2013-03-10T10:47:19.230 に答える