Sprawdzanei czy link na stronie istnieje.

0

Mam pytanie, czy da się w czystym JS sprawdzać, czy na zewnętrznej stronie, w innej domenie istnieje konkretny link do pliku.
Robię apkę, która będzie odpalana z pliku html zapisywanego lokalnie na dysk. Chodzi o to, żeby apka sprawdzała, czy przypadkiem na stronie, z której była pobierana, nie pojawiła się nowsza wersja aplikacji.
Rozumiem, że w JS są intencjonalnie ustawione blokady sprawdzania treści innych stron, ale czy da się to obejść.
A może można problem sprawdzania nowszej wersji rozwiązać inaczej.

2

Da się, jeżeli na docelowej stronie której treść chcesz pobrać jest odpowiedni nagłówek Access-Control-Allow-Origin - link - więc jeżeli to Twoja strona to spoko, ale treści np. kogoś facebooka nie pobierzesz w ten sposób (bo facebook nie ma tego nagłówka).

Edit. Ale prawdopodobnie da się to zrobić prościej, od tego mamy web żeby nie trzeba było lokalnie pobierać żadnych plików i ich aktualizować.

0

Obawiam się że w nagłówku Access-Control-Allow-Origin nie będziesz mógł podać domeny localhost / file:/// i * nie zadziała na lokalnym pliku. Lokalne pliki html mają w ogóle by default mniejsze prawa niż online
Możesz zrobić po prostu pełnoprawną lokalną appkę w HTML i Javascript z użyciem electron albo PWA czyli aplikację online która będzie działać offline - wtedy aplikacja może się prosto sama aktualizować

Jeśli się upierasz przy zwykłym lokalnym pliku html to możesz wykorzystać metodę sprzed czasów kiedy Access-Control-Allow-Origin był dostępny - JSONP. JSONP to po prostu plik Javascript który od razu wykonuje jakąś funkcję / callback. Tę funkcję definiujesz lokalnie i zostanie ona odpalona automatycznie po dołączeniu skryptu pozwalając niejako na pobieranie danych z innej domeny https://www.w3schools.com/js/js_json_jsonp.asp
Proste i skuteczne (i też trochę niebezpieczne jeśli skrypt jest osadzony na innej domenie)

0

@obscurity:

Czy dobrze rozumiem, że to oznacza, że w czystym JS nie da się tego zrobić, to znaczy sprawdzić czy istnieje dany link, lub dana treść na wskazanej stronie. Trochę to dziwne. Mogę ręcznie sprawdzić w przeglądarce dany URL czy takowy istnieje, a nie może tego zrobić kod?

0

no ręcznie możesz zrobić wszystko
aplikacja nie ma pozwolenia robienia rzeczy za Ciebie dla bezpieczeństwa. Z każdym requestem wysyłałyby się Twoje ciasteczka a więc cała sesja. Odczytywanie danych z requestu wysłanego w Twoim imieniu pozwoliłoby na wykradnięcie Twoich danych osobowych. Na przykład mógłbyś kazać odczytać stronę https://facebook.com/profile i pobrać imię, nazwisko, numer telefonu, maila. Z innej strony numer pesel, a jeśli byłbyś zalogowany w banku to nawet dane karty kredytowej.
Wysyłanie danych działa - możesz zapostować coś cross-domain (przed tym uchroni CSRF), ale nie można odczytać danych żadnych z powrotem o ile domena docelowa tego jawnie nie zezwoli.
Jeśli odpalisz to jako aplikację to dostajesz dodatkowe uprawnienia ale wtedy jest to osobna aplikacja i nie ma ryzyka przejęcia sesji.

Możesz za to sprawdzić bardzo łatwo czy istnieje obrazek. Po prostu robisz tag <img src="http://strona.com/obrazek.jpg" onerror="alert('nie istnieje')>. Obrazki można ładować cross-domain, można stwierdzić czy się poprawnie załadowały ale już nie można z nich odczytywać danych. Próba odczytania pikseli z obrazka załadowanego z innej domeny też spotka się z odmową.

1 użytkowników online, w tym zalogowanych: 0, gości: 1