2015-04-03 12 views
5

używam poniższego stronę do utworzenia profilu Pinterest widżet: https://business.pinterest.com/en/widget-builder#do_embed_userBądź Pinterest profilu Widget Bezpieczne

Problem polega na tym, że kiedy widget wyświetla obrazy używać non bezpiecznych linków. Muszę wyświetlić widżet na bezpiecznej stronie, więc muszę mieć https: //

Jakieś pomysły, jak mogę to zrobić?

+0

Czy Twoja strona 'http : // 'lub' https: // '? –

+0

Cała strona jest https: // – a1anm

Odpowiedz

1

Ok po kilku badaniach zrobiłem dość intensywny hack, aby to zadziałało. Pintrest obsługuje treść https, po prostu z jakiegoś powodu nie zawarli tego w swoim interfejsie API. Dlatego przeszedłem przez interfejs API i znalazłem narzędzie ustawiające atrybuty, które ustawia atrybuty dla dowolnych elementów tworzonych przez interfejs API.

Zresztą .. oto skrzypce: https://jsfiddle.net/nanff007/1/ (upewnij się, że https)

A oto kod, który wykonuje magię ...

Jest to obejście/siekać czy cokolwiek chcesz to nazwać. To nie będzie działać wiecznie. Może również nie działać we wszystkich krajach, ponieważ adresy URL akamai mogą się zmieniać. Najlepszym rozwiązaniem byłoby podniesienie biletu na żądanie z 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); 
}()); 
+0

Niestety wygląda na to, że Pinterest złamał ten hack dziś lub wczoraj. –

+0

@ KyleMacFarlane Właśnie sprawdziłem moje jsfiddle i wygląda na to, że działa ... jaki masz problem? –

+0

Używam twojego hacka od miesięcy i działało dobrze do dzisiaj. Jednak udało mi się to naprawić, czyszcząc pamięć podręczną w odpowiednich przeglądarkach. Co by się stało, gdyby widget się nie zainicjował i konsola zalogowała grupę 404 do "/https://log.pinterest.com" (zwróć uwagę na ukośnik na początku). Pytanie brzmi: czy po prostu testy A/B na Pintereście czy też wprowadzenie nowego skryptu? –

0

prostu usunąć https: // i zacząć od początku jako odnośnik. na przykład:

< a href = "// sub-domain.example.com"> Acme Widgets

Usuń spacje przed> i po < w powyższym przykładzie

+0

To nie działa z widżetem Pinterest. – a1anm

+0

https://www.pinterest.com/pinterest/ użyj https zamiast http, mam nadzieję, że zadziała –