Próbuję załadować model 3D do Three.js JSONLoader
, a ten model 3D znajduje się w tym samym katalogu co cała strona internetowa.
Pojawia się "Cross origin requests are only supported for HTTP."
błąd, ale nie wiem, co go powoduje, ani jak go naprawić.
Odpowiedzi:
Moja kryształowa kula mówi, że ładujesz model używając albo
file://
alboC:/
, który pozostaje wierny komunikatu o błędzie, ponieważ nie sąhttp://
Możesz więc zainstalować serwer WWW na lokalnym komputerze lub przesłać model w inne miejsce, a następnie użyć
jsonp
i zmienić adres URL nahttp://example.com/path/to/model
Pochodzenie jest zdefiniowane w RFC-6454 jako
Więc nawet jeśli plik pochodzi z tego samego hosta (
localhost
), ale dopóki schemat jest inny (http
/file
), są one traktowane jako różne pochodzenie.źródło
file://
, ale nie rozumiem, dlaczego jest to dozwolone. Cóż, instaluję Lampp chyba…load('file://C:/users/user/supersecret.doc')
a następnie przesyła zawartość na swój serwer za pomocą ajax itp.Mówiąc wprost - tak, błąd mówi, że nie można skierować przeglądarki bezpośrednio na
file://some/path/some.html
Oto kilka opcji szybkiego uruchomienia lokalnego serwera WWW, aby umożliwić przeglądarce renderowanie plików lokalnych
Python 2
Jeśli masz zainstalowany Python ...
Zmień katalog na folder, w którym
some.html
istnieje plik lub pliki za pomocą poleceniacd /path/to/your/folder
Uruchom serwer WWW Python za pomocą polecenia
python -m SimpleHTTPServer
Spowoduje to uruchomienie serwera WWW do obsługi całej listy katalogów na
http://localhost:8000
python -m SimpleHTTPServer 9000
zapewniającego link:http://localhost:9000
To podejście jest wbudowane w każdą instalację Pythona.
Python 3
Wykonaj te same czynności, ale zamiast tego użyj następującego polecenia
python3 -m http.server
Node.js
Alternatywnie, jeśli potrzebujesz bardziej responsywnej konfiguracji i już używasz nodejs ...
Zainstaluj
http-server
, piszącnpm install -g http-server
Przejdź do katalogu roboczego, w którym znajduje się twoje
some.html
życieUruchom serwer http, wydając
http-server -c-1
Spowoduje to uruchomienie httpd Node.js, który obsługuje pliki w katalogu jako pliki statyczne dostępne z
http://localhost:8080
Rubin
Jeśli twoim preferowanym językiem jest Ruby ... Rubinowi Bogowie twierdzą, że to również działa:
PHP
Oczywiście PHP ma również swoje rozwiązanie.
źródło
$ python -m SimpleHTTPServer
, co powoduje wyświetlenie komunikatu:Serving HTTP on 0.0.0.0 port 8000 ...
Jeśli przeliterujesz nazwę modułu, np.$ python -m SimpleHttpServer
Wtedy otrzymasz komunikat o błędzieNo module named SimpleHttpServer
Otrzymasz podobny komunikat o błędzie, jeśli masz python3 zainstalowany (v. python 2.7). Można sprawdzić wersję Pythona za pomocą polecenia:$ python --version
. Możesz również określić port, na którym chcesz nasłuchiwać w następujący sposób:$ python -m SimpleHTTPServer 3333
$ cd ~/angular_projects/1app
Wtedy$ python -m SimpleHTTPServer
. W przeglądarce wpisz adres URLhttp://localhost:8000/index.html
. Możesz także zażądać plików w podkatalogach katalogu, w którym uruchomiłeś serwer, np.http://localhost:8000/subdir/hello.html
W Chrome możesz użyć tej flagi:
Przeczytaj więcej tutaj.
źródło
--allow-file-access-from-files
). Oznacza to używanie Chrome do zwykłego przeglądania stron internetowych i używanie Chromium jako domyślnej aplikacji do plików HTML.fetch()
i tak to zaprzecza. Musisz użyćXMLHttpRequest
w jakiś sposóbWpadłem na to dzisiaj.
Napisałem kod, który wyglądał tak:
... ale powinno to wyglądać tak:
Jedyną różnicą był brak
http://
drugiego fragmentu kodu.Chciałem tylko to przedstawić na wypadek, gdyby były inne z podobnym problemem.
źródło
Po prostu zmień adres URL na
http://localhost
zamiastlocalhost
. Jeśli otworzysz plik HTML z lokalnego, powinieneś utworzyć serwer lokalny, który będzie obsługiwał ten plik HTML, najprostszym sposobem jest użycieWeb Server for Chrome
. To rozwiąże problem.źródło
Web Server for Chrome
linku do aplikacji - to zdecydowanie najprostsze i najczystsze rozwiązanie do tymczasowej konfiguracji httpd dla IMO ChromeW aplikacji na Androida - na przykład, aby umożliwić JavaScript, aby mieć dostęp do zasobów poprzez
file:///android_asset/
- stosowaniasetAllowFileAccessFromFileURLs(true)
naWebSettings
które można uzyskać z wywołaniemgetSettings()
naWebView
.źródło
Użyj
http://
lub,https://
aby utworzyć adres URLbłąd :
localhost:8080
rozwiązanie :
http://localhost:8080
źródło
najszybszym sposobem dla mnie było: dla użytkowników systemu Windows uruchom plik na Firefox rozwiązany problem, lub jeśli chcesz skorzystać z Chrome najłatwiejszym sposobem dla mnie było zainstalowanie Pythona 3, a następnie z wiersza polecenia Uruchom polecenie,
python -m http.server
a następnie przejdź do http: // localhost: 8000 / następnie przejdź do swoich plikówźródło
Wymienię 3 różne podejścia do rozwiązania tego problemu:
npm
pakietu : Zainstaluj serwer na żywo za pomocąnpm install -g live-server
. Następnie przejdź do tego katalogu otwórz terminal i wpiszlive-server
i naciśnij Enter, strona zostanie wyświetlonalocalhost:8080
. BONUS: Domyślnie obsługuje również ponowne ładowanie na gorąco.target
do"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
i oszczędzać. Następnie za pomocą Chrome otwórz stronę za pomocąctrl+o
. UWAGA: NIE używaj tego skrótu do regularnego przeglądania.źródło
Dla tych, którzy korzystają z systemu Windows bez Pythona lub Node.js, nadal istnieje lekkie rozwiązanie: Mongoose .
Wystarczy przeciągnąć plik wykonywalny w dowolne miejsce, w którym powinien znajdować się katalog główny serwera, i uruchomić go. Ikona pojawi się na pasku zadań i przejdzie do serwera w domyślnej przeglądarce.
Ponadto Z-WAMP jest w 100% przenośnym WAMP działającym w jednym folderze, jest niesamowity. Jest to opcja, jeśli potrzebujesz szybkiego serwera PHP i MySQL.
źródło
Jeśli korzystasz z Mozilla Firefox, będzie działać zgodnie z oczekiwaniami bez żadnych problemów;
PS Zaskakująco, IntenetExplorer_Edge działa absolutnie dobrze !!!
źródło
Proste rozwiązanie dla kogo za pomocą VS Code
Ten błąd pojawia się od jakiegoś czasu. Większość odpowiedzi działa. Ale znalazłem inne rozwiązanie. Jeśli nie chcesz zajmować się tutaj
node.js
ani żadnym innym rozwiązaniem i pracujesz z plikiem HTML (wywoływanie funkcji z innego pliku js lub pobieranie Json API), spróbuj użyć rozszerzenia Live Server .Pozwala łatwo otworzyć serwer na żywo. A ponieważ tworzy
localhost
serwer, problem został rozwiązany. Możesz po prostulocalhost
otworzyć plik HTML i kliknąć edytor prawym przyciskiem myszy i kliknąćOpen with Live Server
.Zasadniczo ładuje pliki za pomocą
http://localhost/index.html
zamiast za pomocąfile://...
.EDYTOWAĆ
.html
Plik nie jest konieczny . Możesz uruchomić Serwer Live za pomocą skrótów.Mam nadzieję, że to komuś pomoże :)
źródło
Właśnie ten błąd pojawiał się podczas ładowania pliku HTML w przeglądarce, która używała pliku json z katalogu lokalnego. W moim przypadku udało mi się to rozwiązać, tworząc prosty serwer węzłów, który pozwalał na serwowanie zawartości statycznej. Zostawiłem kod do tego przy innej odpowiedzi .
źródło
Sugeruję, abyś używał mini-serwera do uruchamiania tego rodzaju aplikacji na localhost (jeśli nie używasz wbudowanego serwera).
Oto bardzo prosty w konfiguracji i uruchomieniu:
źródło
Podejrzewam, że jest już wspomniany w niektórych odpowiedziach, ale nieznacznie go zmodyfikuję, aby uzyskać pełną odpowiedź roboczą (łatwiejszą do znalezienia i użycia).
Idź do: https://nodejs.org/en/download/ . Zainstaluj nodejs.
Zainstaluj serwer http, uruchamiając polecenie z wiersza polecenia
npm install -g http-server
.Przejdź do katalogu roboczego, w którym
index.html
/yoursome.html
rezyduje.Uruchom serwer http, uruchamiając polecenie
http-server -c-1
Otwórz przeglądarkę internetową
http://localhost:8080
lubhttp://localhost:8080/yoursome.html
- w zależności od nazwy pliku HTML.źródło
Po prostu mówi, że aplikacja powinna być uruchomiona na serwerze WWW. Miałem ten sam problem z Chrome, uruchomiłem tomcat i przeniosłem tam swoją aplikację, i zadziałało.
źródło
er. Właśnie znalazłem kilka oficjalnych słów: „Próba załadowania niezbudowanych, zdalnych modułów AMD korzystających z wtyczki dojo / text zakończy się niepowodzeniem z powodu ograniczeń bezpieczeństwa dotyczących różnych źródeł. (Nie ma to wpływu na wbudowane wersje modułów AMD, ponieważ połączenia do dojo / text są eliminowane przez system kompilacji.) „ https://dojotoolkit.org/documentation/tutorials/1.10/cdn/
źródło
Jednym ze sposobów, w jaki działało ładowanie plików lokalnych, jest używanie ich w folderze projektu zamiast poza folderem projektu. Utwórz jeden folder w przykładowych plikach projektu, podobnie jak my tworzymy dla obrazów i zastąp sekcję, w której używasz pełnej ścieżki lokalnej innej niż ścieżka projektu i użyj względnego adresu URL pliku w folderze projektu. To zadziałało dla mnie
źródło
Dla wszystkich
MacOS
... skonfiguruj prosty LaunchAgent, aby włączyć te efektowne funkcje we własnej kopii Chrome ...Zapisz
plist
, o dowolnej nazwie (launch.chrome.dev.mode.plist
na przykład)~/Library/LaunchAgents
z podobną zawartością do ...Powinien zostać uruchomiony przy starcie .. ale możesz to zrobić w dowolnym momencie za pomocą polecenia terminalu
launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist
TADA! 😎 💁🏻 🙊 🙏🏾
źródło
Uruchom serwer aplikacji i powinieneś mieć dostęp do pliku z localhost
źródło
Nie można załadować statycznych plików lokalnych (np. Svg) bez serwera. Jeśli na komputerze jest zainstalowany NPM / YARN, możesz skonfigurować prosty serwer http za pomocą „ serwera http ”
źródło
Wiele problemów z tym związane, z moim problemem brakuje '/' przykład: jquery-1.10.2.js: 8720 XMLHttpRequest nie może załadować http: // localhost: xxxProduct / getList_tagLabels / Musi to być: http: // localhost: xxx / Product / getList_tagLabels /
Mam nadzieję, że ta pomoc dla osób, które spełniają ten problem.
źródło
Udało mi się również odtworzyć ten komunikat o błędzie podczas używania tagu zakotwiczenia z następującym hrefem:
W moim przypadku użyto tagu, aby uzyskać „kursor wskaźnika”, a zdarzenie było faktycznie kontrolowane przez jQuery po kliknięciu. Usunąłem href i dodałem klasę, która ma zastosowanie:
źródło
Użytkownicy Linux Python:
źródło
google-chrome --allow-file-access-from-files <url>
miałby nie działać i być bardziej zwięzły?Jeśli nalegasz, aby
.html
plik był uruchamiany lokalnie i nie był serwowany na serwerze WWW, możesz w pierwszej kolejności zapobiec pojawianiu się żądań krzyżowych, udostępniając problematyczne zasoby.Miałem ten problem podczas próby udostępniania
.js
plikówfile://
. Moim rozwiązaniem było zaktualizowanie skryptu kompilacji w celu zastąpienia<script src="...">
tagów<script>...</script>
. Otogulp
podejście do tego:1. uruchomić
npm install --save-dev
do opakowańgulp
,gulp-inline
adel
.2. Po utworzeniu a
gulpfile.js
do katalogu głównego dodaj następujący kod (po prostu zmień ścieżki do plików, które Ci odpowiadają):gulp bundle-for-local
lub zaktualizuj skrypt kompilacji, aby uruchomić go automatycznie.Można zobaczyć szczegółowe problemy i rozwiązania dla mojego przypadku tutaj .
źródło
Cordova to osiągnąć. Nadal nie mogę zrozumieć, jak to zrobiła Cordova. To nawet nie przechodzi przez powinnaInterceptRequest.
Później dowiedziałem się, że kluczem do załadowania dowolnego pliku z lokalnego jest: myWebView.getSettings (). SetAllowUniversalAccessFromFileURLs (true);
A jeśli chcesz uzyskać dostęp do dowolnego zasobu HTTP, przeglądarka internetowa sprawdzi metodę OPTIONS, którą możesz udzielić dostępu za pośrednictwem WebViewClient.shouldInterceptRequest, zwracając odpowiedź, a dla następującej metody GET / POST możesz po prostu zwrócić wartość null.
źródło
najpierw zamknij wszystkie wystąpienia chrome.
po tym postępuj zgodnie z tym.
Użyłem tego polecenia na komputerze Mac.
„/ Aplikacje / Google Chrome.app/Contents/MacOS/Google Chrome” --allow-file-access-from-files
Dla Windowsa:
Jak uruchomić HTML za pomocą Chrome w trybie „--allow-file-access-from-files”?
źródło
Doświadczyłem tego, gdy pobrałem stronę do przeglądania w trybie offline.
Po prostu musiałem wyjąć
integrity="*****"
icrossorigin="anonymous"
atrybutów ze wszystkich<link>
i<script>
znacznikówźródło