我正在开发一个带有Java的后端和Angular前端的网站。有些外部网站可能会使用POST表单向我的网站发送数据。例如,
▼一般
请求网址 https://myangularwebsite/
请求方法: POST
...
▼请求标题
内容类型: application / x-www-form-urlencoded
主持人: myangularwebsite
原产地: https://externalwebsite
参考者: https://externalwebsite/send.form?id=0
...
▼表单数据
ID: 0000000
时间: 2017.06.04 11:53:58
签名: ... geirgmGKFGJWR ...
...
现在,我需要以某种方式捕获Angular中的表单,将其发送/重定向到后端以验证签名并将答案返回给Angular以继续使用此网站。
我试着在我的网站上发帖测试它如何使用Postman,但得到Cannot POST /
。
我知道如何使用Angular中的GET和URL查询参数,但我认为我需要处理基于我在Chrome {@}}到{{1}时使用Chrome DevTools“网络”部分看到的标头的POST请求}}
我应该在后端专门设置一个路由并将其公开,例如,externalwebsite
在我的后端,并告诉这些网站使用此链接而不是直接发布到我的Angular网站的主页上?
我已经阅读了另一个问题(How to read form post data in Angular 2 typescript?),这有点类似,但我不认为使用PHP是正确的方式,因为我正在开发的网站已经有一个用PHP编写的旧版本。
答案 0 :(得分:0)
您提供的链接的答案是正确的:您不能只使用Javascript,您必须使用一些服务器端代码。他们提到PHP作为一个例子,但任何服务器端组件都会这样做,因为你的后端有Java,所以让它成为Java。
因此,当HTTP请求来自外部站点时,您必须使用服务器端组件来处理它。但是有一些选择。
如果此请求是使用您的用户浏览器进行的(因此它类似于重定向,但使用POST方法),那么您可以执行以下操作:在后端捕获该请求,输出一些javascript与一些数据到用户的浏览器并处理Angular代码中的数据。或者这可能是重定向到您的主要Angular入口点,这取决于您。
如果此请求是通过其他方式进行的(例如,这是使用curl进行的服务器到服务器请求,如来自信用卡处理的通知),不涉及浏览器,那么您不要#39;需要有任何Javascript(Angular或其他任何东西),因为它们只需要浏览器。在这种情况下,您只需在服务器端处理请求。
在这两种情况下,专门用一些特殊端点来处理(或登陆)这种外部发起的请求似乎是合理的。