强制安全表单提交

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程各个阶段提供云产品。 立即开始使用 200 美元的免费积分!

前几天,我正在为一个客户的电子商务网站工作,遇到一个非常令人担忧的问题。 在结账的最后一步,当您按下最后一个按钮提交订单时,浏览器会弹出一个安全警告,告诉用户该页面是安全的,但发送的数据不是。

这可不是人们在网上购物时想看到的东西。

经过一番调查发现,浏览器并没有杞人忧天,它在正常工作。 该页面本身是合法的安全页面,但表单的操作 URL 提交到了一个非安全 URL

我对这个购物车比较熟悉,但我费了很大的劲,却找不到修改这个 URL 的代码。 我提交了一个支持请求,但他们却毫无帮助,把责任推到了我對购物车的自定义修改上(不可能)。 所以…… 我需要一种更好的方法来强制那个 URL 变得安全。

用 JavaScript 强制安全

当然,这不是完美的解决方案,这应该在购物车核心级别完成,但有时你只需要一个解决方案,这样你才能继续你的生活。 以下是我用 jQuery JavaScript 完成此操作的方法

$(function(){

   var $form = $("form#specificForm");

   var newAction = $form.attr("action");
	
   newAction = newAction.replace(/http/,"https");
		
   $form.attr("action", newAction);
	
});

通俗易懂的解释

  • 缓存选择器,因为我们会使用它不止一次
  • 将一个变量设置为操作 URL
  • 用“https”替换字符串中的“http”部分
  • 更改表单上的属性

完成任务……