簡體   English   中英

如何在AngularJS頁面中接收POST請求?

[英]How to receive POST request in an AngularJS page?

我們制作了一個AngularJS應用程序,用戶打開一個URL(xyz.com/booking)填寫表格,然后選擇一些商品進行購買。

之后,用戶點擊“購買”按鈕,離開支付網關站點的站點。 成功付款后,Payment Gateway通過在回撥URL(xyz.com/booking-success)上發送POST請求來回送用戶。

現在問題是我為該回調URL配置的相應Angular頁面沒有打開。 我在RouteProvider中配置了xyz.com/booking-success頁面,但這似乎沒有用。

但是,如果我直接通過瀏覽器打開頁面xyz.com/booking-success,它將被打開。

如何處理這種情況? 任何幫助將不勝感激。

  1. ngRoute無法處理通過POST訪問的URL,如果你在index.html上重寫,你只是發布到index.html而不是你的路由,當你配置/預訂成功並且你通過那個網址發布時,它不起作用cURL您實際上是發布到index.html。 角度路由只是“虛擬”而不是真實的。 像cURL或任何其他HTTP客戶端這樣的系統無法看到它,因此它們會發布到index.html。

  2. 永遠不要處理來自付款/預訂/角度內任何網關的回調網址。 Angular很危險,因為您必須確保將執行回調過程。 Angular不是容錯的,如果有任何javascript錯誤,你的角度調用中的任何錯誤都會丟失所有的回調數據,而你實際上是搞砸了。

回調必須是REST API的一部分,並且必須實現以返回HTTP狀態代碼200,否則在任何其他HTTP代碼的情況下,網關應該知道它們必須重試調用。 (例如,skrill.com在沒有HTTP 200代碼的情況下重復10次回調)。 實際上,AngularJS每次都會響應200,因為您的Web服務器將提供index.html,它不關心javascript代碼中發生了什么。

  1. 只有1個可以通過angular處理的部分是redirect_url ,通常是用戶在代理端成功付款/操作后重定向的URL。 但與此同時,仍然會在應用程序的較低級別調用回調URL。 重定向URL通過瀏覽器重定向內的GET調用,因此用戶將正常看到它。

每個“普通”網關都有callback_url (您的API的低級別通知,操作成功, redirect_url ,重定向回您的網站xyz.com/booking-success)。 但他們應該分開。 如果您的網關沒有重定向,則您無法選擇,只能在新窗口中打開整個預訂。 並在調用回調后以某種方式通知您的前端。 這可以通過間隔輪詢來完成。 例如,10秒,它將檢索您將在回調代碼中設置的booking_id實際狀態(列is_processed (true|false) 。當狀態從false更改為true時,您將通知您的前端(重定向用戶或show popup)您還可以實現socket.io庫,您可以處理輪詢,並且在調用回調URL時您的通知將立即生效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM