2013-01-23 45 views
1

基本上,我試圖發送一個2GB的HTTP POST數據包到我的網站來測試它,因爲HTTP GET不能那麼高。但是,我對此並不是很有經驗,需要就如何實際嘗試這方面提供建議/解釋。先謝謝你。如何將2GB POST數據包發送到站點?

+0

實施什麼?發送POST HTTP請求而不是GET HTTP請求?還是有一些其他的實現解釋你正在尋找?可能的重複:http://stackoverflow.com/a/4206094/1195273 – crush

+1

從這裏開始 - 這是嘗試執行此操作時可能發生的許多問題之一 - http://stackoverflow.com/questions/2364840/what-is - 請求的大小限制 – Scott

+0

@crush - 此問題不是您鏈接的問題的重複。 OP的用例要求比大多數代理服務器具有更大的POST數據,並且服務器將允許沒有分塊。 – Perception

回答

3

嘗試這樣做時會出現很多問題。我會盡量簡短地回顧一下 -

1)服務器設置 - 許多服務器默認情況下會因爲安全原因阻止2GB POST(擁有無限或高郵件最大值會使DoS更容易)。 PHP的默認值爲20M。

1-a)服務器設置 - 許多服務器也有超時設置,如果請求沒有在一定的時間內完成,它將放棄該請求。 2GB可能會導致此設置觸發。

2)瀏覽器設置 - 我對此不積極,但您的瀏覽器也可能會嘗試阻止這種情況。

3)硬件 - 會有多個硬件瓶頸可能導致問題。物理內存(服務器和客戶端),網絡帶寬,可用的硬盤空間(在服務器上寫入權限,取決於您使用的是什麼)。

4)第三方主機 - 如果您的網站由第三方託管,他們可能已採取安全措施來阻止此事。

這可能不是一個完整的列表 - 但在傳輸過程中的許多不同階段,2GB的文件可能會遇到問題。

如果你想辦法把它 - 這是一種方式

<html> 
    <body> 
      <form method="post"> 
        <input type="hidden" 
        <?php 
          echo " value='"; 
          for($i=0;$i<2147483648;$i++) 
            { 
              echo "a"; 
            } 
          echo "'"; 
        ?> 
        > 
        <input type="submit"> 
      </form> 
<?php if(isset($_POST['test'])){ 
    echo $_POST['test']; 
} 
?> 
    </body> 
</html> 

雖然,我真的不建議使用這種方式。我沒有測試過,因爲我現在不想破壞我的網絡服務器。而我的數學,可能有點關 - 但假設1個字符是1個字節(基本ascii)。這將工作,如果頁面加載。

+0

我意識到這一點,但我仍然想知道如何實際創建2GB請求併發送它。 –

+0

我該如何運行它,將其發送到網站? –

+0

點擊提交按鈕。 (我只是在代碼中添加了一些功能,當你點擊提交後,一堆'a將會顯示'2GB'a' – Scott

0

由於使用HTTP請求從點A到點B傳輸2GB似乎不合適(對於您的情況?),您可能希望在某些時候查看FTP/Javascript,以便傳輸數據在後臺運行,不會凍結瀏覽器和服務器。

假設:

  1. 您的服務器可以通過FTP

    處理文件傳輸
  2. 您2GB的數據都在客戶端存儲的地方,而不是在飛行中產生的。

  3. 有與您可以管理使用FTP

  4. 通過上述庫文件傳輸(連接並且實際傳輸),以及一些AJAX,你想也需要同步您的HTTP POST請求生命javascript庫與您的文件傳輸狀態一起循環。然後,在請求中,您可以堅持只提交關於您上傳的2GB的信息。

我已經搜索引擎搜索類似「ftp javascript client」的東西,只有商業瀏覽器嵌入的FTP客戶端被列出。(如果我說廢話,請隨時糾正我)。