[javascript] “원점 간 요청은 HTTP에 대해서만 지원됩니다.” 로컬 파일을로드 할 때 오류

3D 모델을 Three.js에로드하려고합니다. JSONLoader 그 3D 모델은 전체 웹 사이트와 동일한 디렉토리에 있습니다.

내가지고있어 "Cross origin requests are only supported for HTTP."오류,하지만 난 그것을 원인이나 해결 방법을하는 건지 모르겠어요.



답변

내 수정 구슬 당신이 중 하나를 사용하여 모델을로드하는 것을 말한다 file://또는 C:/그렇지 않은 같은 오류 메시지에 충실 유지하는,http://

따라서 로컬 PC에 웹 서버를 설치하거나 다른 곳에서 모델을 업로드하고을 사용 jsonp하여 URL을 변경할 수 있습니다http://example.com/path/to/model

원점은 RFC-6454에서 다음 과 같이 정의 됩니다.

   ...they have the same
   scheme, host, and port.  (See Section 4 for full details.)

따라서 파일이 동일한 호스트 ( localhost)에서 시작되었지만 구성표가 다르면 ( http/ file) 다른 원본으로 처리됩니다.


답변

명시 적으로-예, 오류는 브라우저를 직접 가리킬 수 없다는 것을 의미합니다. file://some/path/some.html

브라우저가 로컬 파일을 렌더링 할 수 있도록 로컬 웹 서버를 빠르게 가동시키는 몇 가지 옵션은 다음과 같습니다.

파이썬 2

파이썬이 설치되어 있다면 …

  1. some.html명령을 사용하여 디렉토리를 파일 또는 파일이 있는 폴더로 변경하십시오.cd /path/to/your/folder

  2. 다음 명령을 사용하여 Python 웹 서버를 시작하십시오. python -m SimpleHTTPServer

그러면 웹 서버가 시작되어 전체 디렉토리 목록을 호스팅합니다. http://localhost:8000

  1. python -m SimpleHTTPServer 9000링크를 제공 하는 사용자 정의 포트 를 사용할 수 있습니다 .http://localhost:9000

이 접근법은 모든 Python 설치에 내장되어 있습니다.

파이썬 3

동일한 단계를 수행하되 대신 다음 명령을 사용하십시오. python3 -m http.server

Node.js

또는보다 반응이 빠른 설정이 필요하고 이미 nodejs를 사용하는 경우 …

  1. http-server입력하여 설치npm install -g http-server

  2. some.html삶이 있는 작업 디렉토리로 변경

  3. 발행하여 http 서버를 시작하십시오 http-server -c-1

그러면 디렉토리의 파일을 정적 파일로 제공하는 Node.js httpd가 나타납니다. http://localhost:8080

루비

선호하는 언어가 루비라면 … 루비 신들도 다음과 같이 작동한다고 말합니다.

ruby -run -e httpd . -p 8080

PHP

물론 PHP에도 솔루션이 있습니다.

php -S localhost:8000


답변

Chrome에서는 다음 플래그를 사용할 수 있습니다.

--allow-file-access-from-files

자세한 내용은 여기를 참조하십시오.


답변

오늘 이것에 뛰어 들었다.

다음과 같은 코드를 작성했습니다.

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

…하지만 다음과 같아야합니다.

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

유일한 차이점은 http://두 번째 코드 스 니펫의 부족입니다 .

비슷한 문제가있는 다른 사람들이있는 경우를 대비하여 그것을 제시하고 싶었습니다.


답변

http://localhost대신 URL을로 변경하십시오 localhost. 로컬에서 html 파일을 열면 해당 html 파일을 제공 할 로컬 서버를 만들어야합니다 Web Server for Chrome. 가장 간단한 방법은을 사용하는 것 입니다. 문제가 해결됩니다.


답변

안드로이드 응용 프로그램에서 – 예를 들어, 자바 스크립트를 통해 자산에 대한 액세스를 가질 수 있도록 file:///android_asset/사용 – setAllowFileAccessFromFileURLs(true)WebSettings당신이 전화에서 얻을 getSettings()온을 WebView.


답변

사용 http://또는 https://URL을 만들 수

오류 :localhost:8080

해결책 :http://localhost:8080