请教大大们,是否遇过网站被设定成,强制用 Get 而不能用 Post 传送 form 数据的情形?
遇到一个古董 ASP 网站,我写了一个测试网页放上去,结果发现它的 form 表单,
即使我写成如下用 post 传送数据,仍会被自动强迫改用 get 传送数据。
A.asp 网页内容如下,传到 B.asp 时,会变成用 get 传送 from 数据。
<form name="form1" id="form1" action="B.asp" method="post">
<input name="TheDate" id="TheDate" type="hidden" value="20120315"/>
<input type="submit">
</form>
目前小的我,想改回正常情况,代码写 post 就是用 post 传送,而不是被强制用 get 传送。
小的我对 ASP 是外行。
请问高手们,这可能是在哪里被设置的?
请问 IIS 中是否有类似设置? 抑或 ASP 中有哪种 config 共用设置文件可做此种设定?
甚或网管或网络硬件设备也可如此设置?
先感谢各位提供意见与分享 (此帖必会结帖,并给分给与提供任何有用意见的网友)。
目前尚未確定真正原因,及為何 method="post" 改成英文大寫 METHOD="POST" 就能回復正常的原因,
但歸納出網友們提出的幾個可能原因:
(1) 該頁有 Frame 或 Include 了其他頁面 :
http://topic.csdn.net/u/20120315/23/8849db54-a203-4c47-9a6d-1ce312c9e11a.html
* 估计是哪里有设置,判断了method方式,但他匹配的是小写的post,像 if(methodValue=="post")然后改为get方式,所以你改成大写就没事儿了
* 找到全局的asp文件 看看是否在哪设定了 传输方式
(2) 被 JavaScript 改了 :
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20120315232926L3J&fumcde=FUM20041006161839LRJ
http://q.cnblogs.com/q/33094/
* 用JAVASCRIPT寫了程式修改FORM送出的方式
* Server只是接收端,不太能控制 Client 的 Get | Post,能控制 Client 行為,應該只有 JavaScript
* client端用ie看原始檔的method不是很準,因為用javascript還是能控制submit的行為
(2) form 的 action 是到一个 https (SSL) 的网页 :
http://www.blueshop.com.tw/board/FUM200410061525290EW/BRD20120315233002LGU.html
http://bbs.chinaunix.net/thread-580564-1-1.html
我知道为什么了,因为那个form的action是到一个https的网页,我的sniffer抓不到https的包,所以其实根本没看到那个form的提交,后来看到的get其实是又转到http后抓到的封包
(3) HTML dtd、DOCTYPE 的設定 :
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20120315232926L3J&fumcde=FUM20041006161839LRJ
HTML dtd宣告造成大小寫的關係
http://q.cnblogs.com/q/33094/
* 这个页面的DOCTYPE声明
* 根据W3C文件,method属性的預設值就是get,也就是说这里指定的post没有生效。
http://www.w3.org/TR/html401/interact/forms.html#adef-method
(4) 其他原因 :
IIS 聽說可做相關的 post, get 設定 (此點我未證實)。
浏览器会遵循method的设定,所以你这里应该是在提交之前,这个method被JS修改过
thanks
检查先是否防火墙搞的鬼。
thanks
检查一下页面中javascript吧
感谢二位,我会往这些方向找。
也欢迎其他人给相关意见。
看一下IIS的ISAPI Filters
感謝大家回應。
該測試頁沒有 Frame 也沒有 Include。今天有同事幫忙測出,
METHOD="POST" 這一行改英文大寫,就變正常(可正常照代碼寫的可 POST 可 GET)
目前原因仍未查明。目前估計是像網友講的,JavaScript 或 config 設置文件的原因。
此帖預計兩日後結帖,有任何意見或相關超連結的網友,歡迎提供。
@WizardWu: 这个页面的DOCTYPE声明用的是什么?
@WizardWu: 根据W3C文档,method属性的缺省值就是get,也就是说这里指定的post没有生效。
@dudu:
感谢您提供此一观点
@dudu:
站长抱歉。因目前不确定是哪种原因造成,JavaScript 或 DOCTYPE 都有可能,因此我先选「丁学」的 JavaScript 当作答案。
http://www.chweng.idv.tw/w3cguide/htmladvanced/declarations.php
http://www.smallni.com/dtd/
按照W3C的标准,我们需要在html的最开始申明文件的DTD类型。如果漏写DTD申明,Firefox仍然会按照标准模式来解析网页,但在IE中就会触发怪异模式。