2012-08-16 52 views
0

我使用Facebook身份驗證與我的網站。Ngnx 1.2.3截斷Facebook代碼參數值,因爲「#」

我使用Nginx 1.2.3。

產生實URL具有以下圖案:

=「> https://www.mysite.net/profile.xhtml?state=dfecc191-5eb5-4e08-a514-bc70fdc17611 &代碼= AQBKJ_1VuycE7 -DPigKfrAt9BLGQJww-p0RKY_Lta6uDxsaMUgzR98soPiOD6NDZ6kyU-NJUHmpAqEOSCxOKi7UGgh0fJSfC9kyh18FtSbQNJdyNEkkfaNtP9GMC8y25W6fOjyR2fj3OnQQTFDwmm-gckqofvhJsmnPSWgHxaan7uiaz_Wgc5JcdTu2DfzhOjqUQ_QG7X14jWDdq9CUtHuSV#=

正如你所看到的Facebook在末尾添加#_=_代碼參數值。

現在,如果您嘗試使用#創建任何類型的URL GET,NGINX將在遇到#時停止解析請求,this for instance

給出以下日誌:

[16/8/2012:11:25:33 0200] 「GET /index.html?value1=jo HTTP/1.1」 200 4976 「 - 」「 Mozilla的/ 5.0(Macintosh上,英特爾的Mac OS X 10_6_8)爲AppleWebKit/537.1(KHTML,例如Gecko)Chrome瀏覽器/ Safari瀏覽器21.0.1180.79/537.1"

在我的情況下,Nginx的停止解析請求,並刪除「# =「代碼參數值!

有什麼想法?

謝謝。 PS:這與Apache很好地結合在一起。

+0

URL的片段部分與實際請求無關,只是用於跳轉到頁面上的錨點。所以我不明白,這是一個錯誤還是apache可以使它變得不同? – apfelbox 2012-08-16 13:25:31

回答

1

所以服務器的句柄哈希(#_ = _)的方式是他們通常忽略它。

這個散列應該不會影響Facebook返回的代碼是否應該工作。

什麼影響它的成功是套管。在嘗試使用代碼之前,請確保您沒有在請求參數上調用.ToLower()(或類似的)。

希望這會有所幫助!

1

我認爲你是錯誤的 - 沒有瀏覽器(如果你混淆它,期望IE)會將URL的片段部分發送到服務器 - 這也是HTTP規範。

你說這與Apache合作幾乎是不可能的。

您的示例是一個完全有效的URL,但URI部分爲http://www.mysite.net/index.html?value1=jo,因爲#hn & value2 = doe實際上是URL的片段部分。