如何添加cookie到浏览器和重定向到Shopify商店



我们正在尝试创建一个附属URL,以便我们可以跟踪用户,当他们安装我们的应用程序在他们的Shopify商店。我们提供一个URL, https://ourappname.com/services/convert?ref=xxxx,当用户点击这个URL时,我们设置浏览器cookie,然后他们被重定向到https://apps.shopify.com/appname。

@GetMapping("/convert")
public void setCookieAndRedirect(HttpServletRequest request,HttpServletResponse response, 
@RequestParam(value ="ref", required = false) String ref) {


System.out.println(" REceived ref code " + ref +" ::: redirecting to appstore.");

Cookie cookie = new Cookie("RefCookie", ref);
try {
//add cookie to response
response.addCookie(cookie);
cookie.setPath("/");
cookie.setMaxAge(60 * 60 * 24 * 365 * 10);
URL urlToRedirect = new URL("https://apps.shopify.com/appname");
cookie.setDomain(urlToRedirect.getHost());
response.addCookie(cookie);
response.sendRedirect("https://apps.shopify.com/appname");
}catch(Exception ex) {
ex.printStackTrace();
}
}

我们的计划是-一旦他们安装了应用程序,我们在我们的服务器上获得控制,我们检查浏览器cookie,如果ref保存在我们的数据库中,我们为用户提供一个特殊的计划。

@GetMapping("/checkForDiscounts")
public ResponseEntity<String> checkForDiscounts(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for(Cookie ck : cookies) {
System.out.println(" Cookie Name = "+ck.getName()+" :::: Value = "+ck.getValue());
if("RefCookie".equals(ck.getName())) {
//provide special discount plan for user
}
}
}else {
System.out.println(" Cookie Not Found");
}

return new ResponseEntity<String>("success", HttpStatus.OK);
}

但不幸的是,cookie将不工作的重定向url,根据这个答案。这个问题还有其他的解决办法吗?

On Calling https://ourappname.com/services/convert?ref=xxxx提供一个重定向状态(3xx)的响应,位置标头为https://apps.shopify.com/appname,这将为ourappname.com设置cookie,它也重定向

出于安全和隐私原因,cookie将被限制为ourappname.com及其子域的可访问性。

但是如果有一个XHR调用发生从https://apps.shopify.com/appname到ourappname.com然后调用将发送cookie连同请求。

重要:由于这是CORS,因此需要在FE/be中设置适当的标头,cookie标志和参数以使其工作。

参考下面的答案。

相关内容

最新更新