2013-07-17 78 views
0

我運行一個Lua HTTP客戶端和請求會導致錯誤400:金桂冠和Lua的HTTP客戶端

[root]# ./luatest 
<!DOCTYPE HTML><html><head><title>400 Bad Request</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="/imgs/errors.css" rel="stylesheet" type="text/css"></head> 
<body><h1>Bad Request</h1> 
<p>Your browser sent a request that this server could not understand.</p></body></html> 400  table: 0x1ba1f70  HTTP/1.1 400 Bad Request 

[root]# cat luatest 
#!/usr/bin/lua 
local http = require("socket.http") 
print(http.request("http://localhost/")) 

[root]# curl "http://localhost" 
<html> hi there </html> [root]# 

G-WAN正確響應捲曲客戶端的請求,但請求同一個文件時,它死來自lua。有什麼我們錯過了,或者這只是不起作用?

+0

類似[fiddler](http://fiddler2.com/)可以幫助你觀察curl和gwan之間原始http請求的區別。 – Mike

+0

Mike,這裏G-WAN是服務器,curl是客戶端,因此G-WAN不會發出任何可能與curl「比較」的請求:G-WAN發送curl或lua客戶端請求的回覆。 – Gil

回答

0

也許你可以看看客戶端的HTTP請求,並將其轉儲到那裏。如果你沒有看到它有什麼問題,我們將有機會告訴你。

自2009年以來,G-WAN瞭解的所有Web瀏覽器的HTTP請求,許多客戶喜歡捲曲,wget的,等等。所以這個客戶問題很可能涉及到一個簡單的HTTP語法comformance問題(如丟失使用HTTP/1.1的「主機」標題)。


因爲有一個在評論和問題明顯的混亂,這裏是一些澄清:

  • 的Lua和捲曲客戶端發送HTTP請求到G-WAN,HTTP服務器
  • 使用G-WAN -tgwan/trace文件中記錄客戶端請求
  • 比較記錄在gwan/trace中的curl和lua HTTP請求,以查看Lua做錯了什麼。

該過程應該讓你找到你的場景中缺少的東西。最後一件事,G-WAN不會「死」,而是用HTTP 400錯誤(「格式錯誤的請求」)回覆。

+0

使用Lua客戶端的開發人員說,它看起來好像和分塊的請求有關...... 試圖讓他讓我看看工作/非工作的示例代碼... –

+0

*「request被分塊「*?只有** HTTP POST和PUT實體**可以被chuncked,但不是請求本身。 – Gil

+0

還在等他回來..這是他的評論,我試圖得到他做了什麼來驗證發生了什麼.... –

0

需要修改LUA請求以包含正確的標題。這樣做的開發者似乎從地球表面上掉下來了。如果我從他那裏獲取代碼,將會更新。