2013-06-18 111 views
0

我需要在瀏覽器中發送不符合RFC的HTTP請求。我需要發送一個GET請求,但不對URL進行編碼。我不希望空格被編碼爲%20。我知道瀏覽器不應該發送這樣的請求,但這正是我需要的項目。在瀏覽器中發送不符合RFC的HTTP請求

我想用以下思路:

  1. XHR - 自動執行URL編碼,並沒有辦法對其進行操作。
  2. Java/Silverlight小程序 - 在新瀏覽器選項卡中打開URL不允許傳遞未編碼的URL。據我所知,applets只是將URL地址傳遞給瀏覽器,它是打開它的瀏覽器。
  3. Java/Silverlight小程序 - 發送原始HTTP請求並嘗試在瀏覽器選項卡中顯示結果。可能嗎?如果是這樣,瀏覽器會將響應視爲有效的源服務器響應?我需要訪問包含DOM(在服務器響應)腳本的DOM,所以它不能打破SOP。

樣品要求:
GET資源ABC HTTP/1.1
主持人:example.com

+0

你知道這個問題即將到來,但是......你爲什麼需要一個違反約定的請求? – corsiKa

+0

發佈示例請求字符串。 – JoshDM

+0

@corsiKa,我只知道有人會堅持知道答案;)。答案是:跨站點腳本。我需要它來利用這個漏洞。這當然是合法的。 – user2498474

回答

0

在HTTP頭,它看起來像 GET http://www.stackoverflow.com/ HTTP1.1

如果你不」 t轉義URL中的空格,它會破壞HTTP標頭。沒有HTTP兼容的服務器將能夠理解請求。

但是,如果您確實有這樣做的合法理由,則可以將數據寫入套接字並將其發送到服務器。有關更多信息,請參閱Oracle教程上的Java套接字。

+0

我測試的服務器瞭解格式錯誤的請求(我在我的初始文章中添加了示例)並威脅將'abc HTTP/1.1'部分作爲HTTP版本變量。我確定。關於你的建議 - 如果我使用套接字並將數據發送到服務器,我無法在瀏覽器中顯示響應。我需要瀏覽器考慮源自服務器的響應,以便通過包含在響應中的腳本訪問DOM。 – user2498474

+0

@ user2498474爲什麼不將輸出的結果傳輸到.html文件並使用瀏覽器打開它? – corsiKa

+0

@corsiKa它不會按預期工作。用戶不應該被迫創建任何文件並打開任何文件,但更重要的是打開HTML不允許訪問原始服務器響應的DOM(SOP禁止這種訪問)。 – user2498474