ASPフォームの TEXTAREA など、POST データの一部として大量のXMLを IIS サーバーに送信すると、予期しない結果が生じる可能性があります。データがサーバー上で処理されるとき、データの処理方法が原因でエラーが発生する可能性があります。その理由は、データをサーバーに送信するときに、POST フィールドに (データ) サイズ制限があるためです。この目的は、侵入者がサービス拒否 (DoS) 攻撃でサーバーに非常に大量のデータを送信するのを防ぐことです。
この制限により、あなたの能力も制限されます。しかし、この問題を回避する方法はあります。 FORM 送信によるデータの送信のみに限定されない場合は、XMLHTTPオブジェクト(Microsoft の XML セットのDOM オブジェクト) を使用して必要な XML を送信できます:
var oXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP"); oXMLHTTP.open("POST", "xml_handler.asp", false); oXMLHTTP.send(xml_to_send);
インターフェースを備えているため、DOMDocument オブジェクトのload() メソッドを使用して送信する XML をロードできます:
Dim oDOM Set oDOM = Server.CreateObject("MSXML2.DOMDocument") oDOM.load Request
var MAXLEN = 90000; var oForm = document.createElement("FORM"); oFORM.method = "POST"; oFORM.action = "xml_handler.asp"; oFORM = document.body.appendChild(oFORM); var s = document.someForm.txtXML.value; if (s.length > MAXLEN) { while (s.length > MAXLEN) { var o = document.createElement("INPUT"); o.type = "hidden"; o.name = "txtXML"; o.value = s.substr(0, MAXLEN); oFORM.appendChild(o); s = s.substr(MAXLEN); } var o = document.createElement("INPUT"); o.type = "hidden"; o.name = "txtXML"; o.value = s.substr(0, MAXLEN); oFORM.appendChild(o); } else { var o = document.createElement("INPUT"); o.type = "hidden"; o.name = "txtXML"; o.value = s; oFORM.appendChild(o); }
ループが必要です。
Dim str, fld For Each fld In Request.Form("txtXML") str = str & fld Next
以上がXMLHTTPを利用して非常に長いXML形式データを送信する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。