2012-12-20 25 views
3

我正在向後端服務器(openid認證庫)發送帖子。它有效,當我有一個簡單的表單,其動作指向服務器的URL。

但是,當我使用$ http.post方法失敗。我比較了標題並將內容類型更改爲url-form編碼。這解決了部分問題,但來自服務器的重定向仍然失敗。

任何有關常規表單發佈和導致此行爲的$ http.post角色之間的區別的想法?

+1

你可以發表你正在使用角度來發表帖子的代碼嗎?該表單可能也適合發佈。 – gbtimmon

回答

2

但是從服務器重定向仍然失敗。

服務器重定向不應該工作回到前端,因爲它的最後一頁達到Ajax請求會給你的HTTP狀態代碼。因此,如果您通過ajax請求的頁面正在重定向到另一個頁面,它會給您200個狀態。你可以閱讀這個http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send-method的w3c草案。

+0

感謝您的答案。是否有可能不使用角度做xhr文章和常規文章。一旦整個操作完成, - 該帖子是使用openid進行登錄的 - 我想再做一次xhr以從服務器檢索用戶的授權數據。我如何設置它? – murtaza52

+2

爲什麼不能?只需製作一個沒有任何事件綁定的表單標籤的普通表單。沒有任何Angular綁定的html標籤只會像往常一樣運行。 – Mahbub

1

如果你真的想看到不同,我會建議設立一個免費的工具,如Fiddler。然後,您可以在離開和/或到達時看到請求,並查看每個差異。

但是,從理論上講,只有在表單標記或$ http.post調用中設置的任何差異。他們都使用POST我假設。一個人可能會使用不同的內容類型(表單標籤上的enctype),而不是像「multipart/form-data」或「application/x-www-form-urlencoded」與「application/json」。 ..這是一個關鍵的部分,告訴服務器你發送什麼類型的數據。如果服務器期待一種類型並獲得另一種類型,那可能會導致您的失敗。

雖然沒有看到您的代碼很難說。