想要使用rest api设置cookie并重定向到新页面

时间:2019-06-26 19:03:56

标签: php node.js reactjs cookies

我有一个网站www.domain1.com/step1,其中用户在其中填写了姓名,手机,详细信息,在我的www.domain2.com/step2中,我进行了第二步的表单,用户在其中填写了有关个人的更多详细信息信息。我的要求是如何将数据从domain1转移到domain2。 domain1客户端会以类似的网址向我发送发布请求。 domain2.com/redirector。在此url中,我捕获了post参数并在cookie中设置了信息,然后重定向到domain2.com/step2。

我在域2(React + Node)中有服务器端渲染应用程序,因此我写了一条捕获www.domain2.com/redirector(POST)参数的路由,然后重定向到www.domain2.com/step2

app.post('/redirector',function(req, res){
        let data = {};
        data.name = (req.body.customer_name === undefined) ? null : req.body.customer_name;
        data.pan_number = (req.body.pan_detail === undefined) ? null : req.body.pan_detail;
        res.cookie('userdata',JSON.stringify(data))
        let apiUrl = req.protocol+"://"+req.headers.host+'/step2'
        return res.redirect(302, apiUrl);
    });

当用户打开www.domain1.com/step1并填写表单,然后在提交时单击,我想调用CURL发布方法以将信息发送到www.domain2.com/redirector。然后应设置cookie,并将其重定向到step2表单。

为了测试这一点,我在php中创建了一个curl文件并发送post params,但是当我重定向到step2时,cookie不会设置。可能有两个方法。

function postRequest($url,$params)
{
  $postData = '';
   $count = count($params);
   foreach($params as $k => $v) 
   { 
      $postData .= $k . '='.$v.'&'; 
   }
    $postData = rtrim($postData, '&');
    $ch = curl_init();  
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_POST, $count);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);    

    $output=curl_exec($ch);
    if($output === false)
    {
        echo "Error Number:".curl_errno($ch)."<br>";
        echo "Error String:".curl_error($ch);
    }
    curl_close($ch);
    return $output;
}

$arr = array(
        "customer_name"=>"test user",
        "pan_detail"=> "XYSNZ");

$d = postRequest('http://www.domain2.com/redirector',$arr);
header('Location: http://www.domain2.com/step2');
  1. 我将创建一个类似于www.domain2.com/redirector的api,它将设置cookie并返回url(domain1重定向到我)。
  2. 我将向他发送一个api www.domain2.com/redirector,该API会设置cookie并将其重定向到step2。

如果我在邮递员中访问www.domain2.com/redirector,它将返回cookie,但在curl中,它将不会设置cookie。所以我的方法不好吗?或者还有其他方法可以做到这一点。

0 个答案:

没有答案