使用XML HTTP发送超长XML表单数据

来源:互联网 发布:襄阳程序员工资 编辑:程序博客网 时间:2024/06/05 16:43
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
在把大量的HTTP://www.66of.com" target=_blank>XML作为POST数据的一部分发送给你的IIS服务器的时候——诸如在ASP表单的TEXTAREA里——你可能会得到一些没有预料到的结果。当数据在服务器上被处理的时候,由于你处理数据方式的不同,你最终可能会碰到错误。其原因是,当你把数据提交回服务器的时候,POST字段里有一个(数据)大小的限制。这样做的目的是为了防止可能的入侵者在实施拒绝服务(denial of service,DoS)的攻击中向服务器发送超大量的数据。

这一限制也束缚你的能力。但是有办法解决这个问题。如果你没被限制在只能够通过FORM提交来发送数据,那么你就可以使用HTTP://www.66of.com" target=_blank>XMLHTTP对象(微软的HTTP://www.66of.com" target=_blank>XML集里的一个DOM对象)来发送所需要的HTTP://www.66of.com" target=_blank>XML

var oHTTP://www.66of.com" target=_blank>XMLHTTP = new ActiveXObject("Microsoft.HTTP://www.66of.com" target=_blank>XMLHTTP");
oHTTP://www.66of.com" target=_blank>XMLHTTP.open("POST", "HTTP://www.66of.com" target=_blank>XML_handler.asp", false);
oHTTP://www.66of.com" target=_blank>XMLHTTP.send(HTTP://www.66of.com" target=_blank>XML_to_send);

由于Request对象会实现IStream接口,所以你可以通过使用DOMDocument对象的load()方法来加载所要提交的HTTP://www.66of.com" target=_blank>XML

Dim oDOM
Set oDOM = Server.CreateObject("MSHTTP://www.66of.com" target=_blank>XML2.DOMDocument")
oDOM.load Request

如果你被限制在只能够使用FORM提交,那么你可以通过提交多个TEXTAREA或者INPUT来跨越这一限制,前面两者在服务器一接收到这个FORM数据的时候就可以被重新组合在一起:

var MAXLEN = 90000;
var oForm = document.createElement("FORM");
oFORM.method = "POST";
oFORM.action = "HTTP://www.66of.com" target=_blank>XML_handler.asp";
oFORM = document.body.appendChild(oFORM);
var s = document.someForm.txtHTTP://www.66of.com" target=_blank>XML.value;
if (s.length > MAXLEN) {
   while (s.length > MAXLEN) {
     var o = document.createElement("INPUT");
     o.type = "hidden";
     o.name = "txtHTTP://www.66of.com" target=_blank>XML";
     o.value = s.substr(0, MAXLEN);
     oFORM.appendChild(o);
     s = s.substr(MAXLEN);
   }
   var o = document.createElement("INPUT");
   o.type = "hidden";
   o.name = "txtHTTP://www.66of.com" target=_blank>XML";
   o.value = s.substr(0, MAXLEN);
   oFORM.appendChild(o);
} else {
   var o = document.createElement("INPUT");
   o.type = "hidden";
   o.name = "txtHTTP://www.66of.com" target=_blank>XML";
   o.value = s;
   oFORM.appendChild(o);
}

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击