如何在AngularJS页面中接收POST请求?
我们制作了一个AngularJS应用,其中用户打开一个URL(xyz.com/booking)填写表格,然后选择一些要购买的物品。
之后,该用户单击“购买”按钮,并离开该站点进入支付网关站点。成功付款后,Payment Gateway会通过在回调URL(xyz.com/booking-
success)上发送POST请求来发回用户。
现在的问题是,我为该回调URL配置的相应Angular页面没有打开。我在RouteProvider中配置了xyz.com/booking-
success页面,但这似乎不起作用。
但是,如果我直接通过浏览器打开xyz.com/booking-success页面,它将被打开。
如何处理这种情况?任何帮助将不胜感激。
回答:
ngRoute
无法处理通过POST访问的URL,如果您已经在index.html上进行了重写,而只是发布到index.html而不是您的路由,则在配置/ booking-success并通过cURL对该URL进行POST时将无法正常工作您实际上是发布到index.html。角形布线只是“虚拟”的,不是真实的。诸如cURL或任何其他HTTP客户端之类的系统看不到它,因此它们正在发布到index.html。切勿在angular内处理来自付款/预订/任何网关的回调URL。Angular是危险的,因为您必须确保将执行回调过程。Angular不是容错的,如果有任何javascript错误,Angular调用内的任何错误都将丢失所有回调数据,并且字面上就是搞砸了。
回调必须是REST
API的一部分,并且必须实现以返回HTTP状态代码200,否则,如果使用任何其他HTTP代码,网关应知道它们必须重试调用。(例如,如果没有HTTP
200代码,skrill.com将重复执行10次回调)。实际上,AngularJS每次都会以200响应,因为您的Web服务器将提供index.html,它并不关心javascript代码内部会发生什么。
- 只能通过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时,您将通知您的前端(重定向用户或显示弹出窗口)。您还可以实现套接字。
io库,您可以处理轮询,并且在调用回调URL时,您的通知将立即生效。
以上是 如何在AngularJS页面中接收POST请求? 的全部内容, 来源链接: utcz.com/qa/425859.html