这个真的是我的大脑: 我需要将非敏感数据发布到第三方支付网关。我想使用内置的cakephp表单验证工作正常。
我正在做的是将表单提交给本地操作,该操作会对数据进行分类并输出任何错误(如果有的话)。如果没有验证错误,我遇到的情况是尝试将该帖子数据重新提交到远程URL。问题是必须将浏览器重定向到带有发布数据的外部URL ...我想我在这里丢失了它我知道这可能是不可能的... 我的计划B只是使用javascript进行表单验证并直接发布到外部URL。我查看使用curl但我需要浏览器重定向/打开extrernal url。我有办法让curl在发布到网址时重定向浏览器吗?
答案 0 :(得分:2)
根据您的能力和其他与业务相关的决定,您可以选择几条路线。
我的建议是使用AJAX验证方法来验证您的数据。然后,您的服务器将用于验证(您可以存储相关详细信息,如发票号,客户信息等)。一旦验证,您可以将页面提交表单数据到第三方站点。请注意,根据您的安全证书(用于SSL)的设置方式,您可能会遇到一些与安全相关的问题。
另一个选择(我认为更安全的选择)将是您的网站接受数据。如果它没有验证,请从客户端请求修复(这里非常基本的Cake的东西)。如果确实验证了,则可以使用libcurl将数据发送到第三方处理器,在请求的POST数据中正确形成每个变量。
您无法使用POST有效负载重定向客户端。上述两个选项中的任何一个都可以帮助您完成工作。我个人会使用第二种方法,原因如下:1)更容易审核/调试(它已经在您的服务器环境中等)2)更安全 - 您可以比客户端系统更好地锁定服务器,3)似乎对我来说更清洁(客户端看不到遍布各处的连接等)和4)您可以在通过系统时修改和跟踪请求(当处理器报告错误时适当地响应客户端等)
总而言之,这是一件可行的事情。您的第三方是否提供API?你也可以考虑一下。
答案 1 :(得分:1)
如果您的应用程序流程中有额外的步骤,您可以轻松地执行此操作,无需使用Javascript:
对于用户,您可以显示该中间页面“请最后一次确认您的数据,单击”返回“以更改数据或点击”提交“将其提交到外部网站。”
答案 2 :(得分:0)
我所知道的唯一选择是使用JavaScript。
如果您只想发送数据,可能会有很多选项。但重定向用户是另一回事。
您最好的选择可能是重新考虑您希望将用户发送到其他网站的原因。
答案 3 :(得分:0)
使用CURL重定向有点复杂,但它可能,而且非常难。如果您具体了解要重定向到的URL,或者您是否可以构建该重定向URL,则会更容易。以下是curl调用示例:
/usr/bin/curl -D "/tmp/0001" -H "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)" -H "Cookie: key=value; key2=value2;" -H "Content-length: 89" -d "this=is&the=post&data=true" http://url.com/application.php
让我们来看看命令:
grep Location /tmp/0001
的内容即可获得包含位置重定向标题的行。那就是应用程序本身重定向。这也是您解析任何cookie的地方。完成初始发布后,只需使用第二个网址再次调用/ usr / bin / curl即可。只需按照它应该查找第二页的方式构建标题,以及它发送给您的任何Cookie,它应该像浏览器一样发布。
curl命令的结果将是实际页面,您可以登录到某个数据库进行验证。
我希望这会有所帮助。