2016-10-28 115 views
0

我正在elixir插件中運行應用程序,當我在端口80上運行這個api應用程序時,它會丟棄一些數據包並直接從牛仔反應400錯誤請求,甚至不會記錄日誌或其他內容。當我們調試它時,我們發現,在獲取牛仔請求處理程序時,某些標題值被丟棄。牛仔放在端口80上的一些數據包

我們在AWS負載平衡器下運行,當我們在8080上運行時,每件事情都很完美,但是當我們放上80包時就開始下降了,任何人都可以知道解決方法嗎?

我們做了一個第一請求:

「POST/VER2 /用戶/ update_token HTTP/1.1 \ r \ n主機:int.oktalk.com \ r \ nAccept:/ \ r \ nAccept編碼: gzip,deflate \ r \ nAccept-語言:en-GB,en; q = 0.8,en-US; q = 0.6,it; q = 0.4 \ r \ n緩存控制:no-cache \ r \ n內容類型:應用/ JSON \ r \ nOrigin:鉻擴展:// fhbjgbiflinjbdggehcddcbncdddomop \ r \ nPostman令牌:05f463a4-db55-6025-5cc1-f62b83db7c93 \ r \ ntoken:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxNH0.Ind - phmd5saXMjBVjgRKNcCEL60qZoCbHggu-iAqY8 \ r \ n用戶-Agent:Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_0)AppleWebKit/537.36(KHTML,如Gecko)Chrome/54.0.2840.71 Safari/537.36 \ r \ nX-Forwarded-For:27.34.245.42 \ r \ nX-轉發-Port:80 \ r \ nX-Forwarded-Proto: HTTP \ r \ nContent-長度:103 \ r \ nConnection:保活\ r \ n \ r \ n」表示第一次請求

響應:200 OK

我們再次做出同樣的API調用的第二個請求。我們所看到的是前一個數據包的內容長度是103,並且在下一個數據包中沒有看到前103個字節。我猜系統認爲前103個字節屬於前一個數據包本身。

「e \ r \ nAccept-Language:zh-CN,en; q = 0.8,en-US; q = 0.6,it; q = 0.4 \ r \ n緩存控制:no-cache \ r \ nContent型:應用/ JSON \ r \ nOrigin:鉻擴展:// fhbjgbiflinjbdggehcddcbncdddomop \ r \ nPostman令牌:0e52f1b6-120a-c321-2ba4-d6d20d5eb479 \ r \ ntoken:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxNH0.Ind - phmd5saXMjBVjgRKNcCEL60qZoCbHggu-iAqY8 \ r \ n用戶代理:Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_0)AppleWebKit/537.36(KHTML,如Gecko)Chrome/54.0.2840.71 Safari/537.36 \ r \ nX-Forwarded-For:27.34.245.42 \ r \ nX-Forwarded-Port:80 \ r \ nX-Forwarded-Proto:http \ r \ nContent-Length:103 \ r \ nConnection:keep-alive \ r \ n \ r \ n「

對此的回覆: 400個不好的請求,我看到因爲第一個露點字節丟失。

我們使用Elixir.Plug和牛仔

+0

「當我們調試它時,我們發現,當獲取牛仔請求處理程序」哪些值被丟棄時,某些頭部值被丟棄?你能擴展一下嗎? – Dogbert

+0

@Dogbert請檢查問題,我已編輯 – 0zero0zero

回答

0

對於其他人發現這個問題(像我一樣),請確保你不會忽略任何從Plug.Conn函數返回conn結構。

這個障礙概述在this issue完整,以及說明如何出錯的gif。