首页 > 解决方案 > 将php curl转换为节点js请求

问题描述

我有以下 php 代码:

        //Create url
        $url = "https://pci.zcredit.co.il/WebControl/RequestToken.aspx";
        $post = "TerminalNumber=$TerminalNumber"
        ."&Username=$UserName&PaymentSum=$PaymentSum&PaymentsNumber=$PaymentsNumber&Lang=$Lang"
        ."&Currency=$Currency&UniqueID=$UniqueID&ItemDescription=$ItemDescription&ItemQtty=$ItemQtty"
        ."&ItemPicture=$ItemPicture&RedirectLink=$RedirectLink&NotifyLink=$NotifyLink"
        ."&UsePaymentsRange=$UsePaymentsRange&ShowHolderID=$ShowHolderID&AuthorizeOnly=$AuthorizeOnly"
        ."&HideCustomer=$HideCustomer&CustomerName=$CustomerName&CssType=$CssType&IsCssResponsive=$IsCssResponsive";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url); // Create the request url
        curl_setopt($ch, CURLOPT_POSTFIELDS,$post); //Set post value
        curl_setopt($ch, CURLOPT_POST, 1); // Set the request method to POST
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Not return data in brower
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        $page = curl_exec($ch);    // Get the response

我正在尝试在节点 js 中使用请求:

let url = "https://pci.zcredit.co.il/WebControl/RequestToken.aspx";
        let post = `TerminalNumber=${TerminalNumber}`
        +`&Username=${UserName}&PaymentSum=${PaymentSum}&PaymentsNumber=${PaymentsNumber}&Lang=${Lang}`
        +`&Currency=${Currency}&UniqueID=${UniqueID}&ItemDescription=${ItemDescription}&ItemQtty=${ItemQtty}`
        +`&ItemPicture=${ItemPicture}&RedirectLink=${RedirectLink}&NotifyLink=${NotifyLink}`
        +`&UsePaymentsRange=${UsePaymentsRange}&ShowHolderID=${ShowHolderID}&AuthorizeOnly=${AuthorizeOnly}`
        +`&HideCustomer=${HideCustomer}&CustomerName=${CustomerName}&CssType=${CssType}&IsCssResponsive=${IsCssResponsive}`;

const request = require('request');

request(url +'/' + post, { json: true }, (err, res, body) => {
  if (err) { return console.log(err); }

});

但是我应该只将帖子参数添加到原始网址吗?它安全吗?

提前致谢!

标签: phpnode.jscurlrequest

解决方案


使用Request发布 URL 编码表单的语法很简单:

request.post(url).form({ key: value })

当然,您可以选择使用 url 中的参数发送请求,使用模板文字变量,从安全角度来看,这不会改变任何内容,但它会更具可读性。

如果您清理参数并使用加密(https),您的代码将是安全的,就像您应该使用任何语言一样,正如main.c在他的评论中所说。


推荐阅读