W kontekście skryptu użytkownika, na przykład wykonywanego przez Tampermonkey, czy możliwa jest komunikacja między dwiema stronami różnych domen, które ustawiają "X-Frame-Opcje" na "SAMEORIGIN"?Czy można komunikować się między stronami (zakładkami), które ustawiają "X-Frame-Opcje" na "SAMEORIGIN" ze skryptem użytkownika?
wiem o this way wysyłania wiadomości z jednej strony na drugą przez korzystających iFrames i postMessage
, ale podczas pracy z witryn nie kontroli, jak w moim przypadku przepełnienie stosu i Google (pracuje na bot zautomatyzować coś dla siebie) , podczas próby utworzenia elementu iFrame zostanie wyświetlony błąd SAMEORIGIN
.
Ale myślałem, że skoro mogę wstawić skrypt na obu stronach, możliwe, że uda się usunąć pewne obejście lub alternatywne rozwiązanie.
Jedna z propozycji, shared worker wyglądała obiecująco, ale wydaje się wymagać, aby strona pochodziła z tego samego źródła. Spojrzałem również na specyfikację Broadcast Channel API, ale nie jest ona jeszcze nigdzie implementowana, a także wydaje się być związana z tą samą polityką pochodzenia.
Inną sugerowaną możliwością wspomnianą do tej pory w komentarzach jest użycie GM API, ponieważ jest to skrypt użytkownika (rozszerzone/specjalne funkcje JS). Dzięki GM_xmlhttpRequest
możemy zignorować ograniczenia między domenami i załadować google.com
, a następnie umieścić je w elemencie iframe, ale wszystkie źródła będą wskazywać na stronę, w której znajduje się iframe
, więc przeszukiwanie strony Google próbuje wykonać wyszukiwania w domenie nadrzędnej witryny .
GM_xmlhttpRequest({
method: "GET",
url: "https://www.google.com",
headers: {
"User-Agent": "Mozilla/5.0",
"Accept": "text/xml"
},
onload: function(response) {
$('html').html('<iframe id="iframe"></iframe>');
$("#iframe").contents().find('html').html(response.responseText);
});
Może mógłbym edytować żądań wyszukiwania, aby wskazywał google.com
konkretnie, zamiast pozwolić poszukiwanie przyjąć domenę stronie macierzystej. A jeśli to się nie uda z powodu jakiegoś zawieszenia z tą samą zasadą pochodzenia, mogę nawet spróbować zastąpić Google xmlhttpRequest
z GM_xmlhttpRequest
, ale nie jestem pewien, czy można to zrobić od skryptu użytkownika, jeśli ładujesz funkcje GM , będzie działać w piaskownicy, nie będzie w stanie przeplatać się ze skryptami stron, jeśli dobrze zrozumiem. Po prostu nie jestem pewien.
Z drugiej strony, jeśli możemy oszukać zawartość iframe's
, aby traktować google.com
jako domenę żądań, mimo że działamy, ale przykłady nie wydają się istnieć dla tego rodzaju rzeczy, więc jestem mając problemy z ustaleniem, jak to zrobić.
To samo źródło zapobiega przeglądaniu strony przeglądarki. Nie ma gdzie wstawić skryptu –
Zawsze są funkcje 'GM_ *'. Wierzę, że Tampermonkey obsługuje te, których potrzebujesz. –
_ "Ale pomyślałem, ponieważ jestem w stanie wstawić skrypt na obu stronach" _ Jeśli możesz wstawić '