"Päritoluülesed päringud on toetatud ainult HTTP puhul." viga kohaliku faili laadimisel

Ma üritan laadida 3D-mudelit Three.js-i JSONLoaderiga ja see 3D-mudel on samas kataloogis kui kogu veebisait.

Ma saan "Cross origin requests are only supported for HTTP." vea, kuid ma ei tea, mis seda põhjustab ega kuidas seda parandada.

Lahendus

Minu kristallkera ütleb, et sa laadid mudeli kas file:// või C:/ abil, mis jääb veateate juurde, kuna need ei ole http://.

Seega võid kas paigaldada veebiserveri oma kohalikku arvutisse või laadida mudeli kuhugi mujale ja kasutada jsonp ning muuta url http://example.com/path/to/model-ks.

Päritolu on defineeritud RFC-6454 kui

   ...neil on sama
   skeem, host ja port.  (Vt 4. jaotist, kus on esitatud kõik üksikasjad.)

Seega, isegi kui teie fail pärineb samast hostist (localhost), kuid niikaua kui skeem on erinev (http / file), käsitletakse neid erineva päritoluga failidena.

Kommentaarid (15)

Lihtsalt selgituseks - jah, viga ütleb, et te ei saa oma brauseri otse aadressile file://some/path/some.html suunata.

Siin on mõned võimalused kohaliku veebiserveri kiireks käivitamiseks, et lasta brauseril kohalikke faile renderdada

Python 2

Kui teil on Python installeeritud...

  1. Vahetage kataloogi kausta, kus teie fail some.html või fail(id) on olemas, kasutades käsku cd /path/to/your/folder.

  2. Käivitage Pythoni veebiserver käsuga python -m SimpleHTTPServer.

See käivitab veebiserveri, mis majutab kogu teie kataloogi loendi aadressil http://localhost:8000.

  1. Võite kasutada kohandatud porti python -m SimpleHTTPServer 9000, mis annab teile lingi: http://localhost:9000

See lähenemine on sisseehitatud igasse Pythoni installeerimisse.

Python 3

Tee samu samu samme, kuid kasuta selle asemel järgmist käsku python3 -m http.server.

Node.js

Alternatiivina, kui sa nõuad tundlikumat seadistust ja kasutad juba nodejs...

  1. Installige http-server, kirjutades npm install -g http-server.

  2. Muutke oma töökataloogi, kus asub teiesome.html.

  3. Käivitage oma http-server, andes käsu http-server -c-1.

See käivitab Node.js httpd, mis teenindab teie kataloogis olevaid faile staatiliste failidena, mis on kättesaadavad aadressilt http://localhost:8080.

Ruby

Kui teie eelistatud keel on Ruby ... Ruby jumalad ütlevad, et see töötab samuti:

ruby -run -e httpd . -p 8080

PHP

Loomulikult on ka PHP-l oma lahendus.

php -S localhost:8000
Kommentaarid (10)

Täna sattusin sellesse.

Ma kirjutasin koodi, mis nägi välja selline:

app.controller('ctrlr', function($scope, $http){
    $http.get('localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

...kuid see peaks nägema välja nii:

app.controller('ctrlr', function($scope, $http){
    $http.get('http://localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

Ainus erinevus oli http:// puudumine teises koodilõikes.

Lihtsalt tahtsin selle välja panna, juhuks kui teistelgi on sarnane probleem.

Kommentaarid (0)