跳转url时隐藏url参数

  最近项目中需要调用某个商用的报表服务,调用方式就是通过该服务的url带参数来生成报表,但是url又挂着用户名密码等信息。因为只是最简单的购买了人家的服务,人家并不提供更安全的从后台进入的方式(需要加钱)。。。只好通过前台包装一下url进行传输。虽然经过https加密,可以不用担心传输过程的安全问题,但是前台还是可以从f12查到参数信息的,暂时没想到更好的办法。

    /**
     * @Author Qk
     * @Date 2017/10/31 12:01
     * @Description 隐藏url参数,并跳转
     * @Param
     * @Return
     */
    var formUtil = (function () {

        //根据参数生成form元素
        function generateFormDom(config) {
            config = config || {};

            var url = config.url,
                method = config.method || 'GET',
                params = config.params || {};

            var form = document.createElement('form');
            //引入页面必须有body,不然会报form连接失败
            document.body.appendChild(form);
            form.action = url;
            form.method = method;
            form.target = "_blank";

            for (var param in params) {
                var value = params[param],
                    input = document.createElement('input');
                input.type = 'hidden';
                input.name = param;
                input.value = value;
                form.appendChild(input);
            }

            return form;
        }

        //解析url后跳转
        var submitFormUrl = function (url) {
            if (typeof url !== 'string') {
                return false;
            }

            var params = {};
            var paramsarr = url.split('?');

            //获取host
            var urlPre = paramsarr[0];
            //获取参数数组
            paramsarr = paramsarr[1].split('&');
            var length = paramsarr.length;
            for (var n = 0; n < length; n++) {
                params[paramsarr[n].split('=')[0]] = paramsarr[n].split('=')[1];
            }

            //根据url解析结果,生成form元素
            var form = generateFormDom({
                url: urlPre,
                method: 'POST',
                params: params
            });

            $(form).submit();
            //提交后,移除页面中的form元素
            $(form).remove();
        };

        return {
            submitFormUrl: submitFormUrl
        }
    })();

你可能感兴趣的:(跳转url时隐藏url参数)