使 Pinterest 个人资料小部件安全

Make Pinterest Profile Widget Secure

我正在使用以下页面创建 Pinterest 个人资料小部件: https://business.pinterest.com/en/widget-builder#do_embed_user

问题是当小部件显示图像时使用了非安全链接。我需要在安全页面上显示小部件,因此需要它们为 https://

有什么想法可以解决这个问题吗?

好的,经过一些研究后,我进行了相当深入的修改以实现此目的。 Pintrest 确实提供 https 内容,只是出于某种原因他们没有将其包含在 API 中。因此,我已经遍历了 API 并找到了属性 setter,它将属性设置为 API 创建的任何元素。

无论如何..这是fiddle:https://jsfiddle.net/nanff007/1/(确保https)

这是执行魔法的代码...

This is a workaround/hack or whatever you want to call it. It will not work forever. It may also not work in all countries as the akamai urls may change. The best option would be to raise a request ticket with Pintrest.

(function() {
    $('a[data-pin-do]').each(function () {
        $(this).attr('data-pin-dont', $(this).attr('data-pin-do'));
        $(this).removeAttr('data-pin-do');
    });

    var timer = setInterval(function () {
        for (prop in window) {
            if (prop.search(/^PIN_/) > -1 && typeof window[prop] != 'boolean') {
                clearInterval(timer);
                window[prop].f.set = function (el, att, string) {
                    if(att == 'src' && el.tagName.toLowerCase() == 'img') {
                        string = string.replace(/(^http:\/\/)/i, "https://s-");
                    }

                    if (typeof el[att] === 'string') {
                        el[att] = string;
                    } else {
                        el.setAttribute(att, string);
                    }
                };

                $('a[data-pin-dont]').each(function () {
                    $(this).attr('data-pin-do', $(this).attr('data-pin-dont'));
                    $(this).removeAttr('data-pin-dont');
                });

                window[prop].f.init();
                break;
            }
        }
    }, 100);
}());

只需删除 https: 并以 // 作为 link 的开头。 例如:

Acme 小部件

去掉上面例子中>前后的空格