JSONLoader
を使ってThree.jsに3Dモデルをロードしようとしていますが、その3DモデルはWebサイト全体と同じディレクトリにあります。
"Cross Origin requests are only supported for HTTP."
エラーが発生しましたが、それが原因で何が原因でそれを修正するのかもわかりません。
私の水晶玉は、file://
またはC:/
のいずれかを使用してモデルをロードしていると言います。これらはhttp://
ではないため、エラーメッセージに忠実です
したがって、ローカルPCにWebサーバーをインストールするか、モデルを別の場所にアップロードして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
に向けることができないということです
ブラウザにローカルファイルを表示させるためにローカルWebサーバをすばやく起動するためのオプションがいくつかあります。
Pythonがインストールされているなら...
some.html
コマンドを使用して、ファイルcd /path/to/your/folder
またはファイルが存在するフォルダにディレクトリを変更します。
python -m SimpleHTTPServer
コマンドを使用してPython Webサーバーを起動します。
これにより、Webサーバーが起動し、ディレクトリ一覧全体がhttp://localhost:8000
にホストされます。
python -m SimpleHTTPServer 9000
を使うことができます:http://localhost:9000
このアプローチはPythonのインストール環境に組み込まれています。
同じ手順を実行しますが、代わりに次のコマンドを使用します。python3 -m http.server
あるいは、より応答性の高い設定が必要で、すでにnodejsを使用している場合は...
http-server
と入力してnpm install -g http-server
をインストールします
Yoursome.html
が存在する作業ディレクトリに移動します。
http-server -c-1
を発行してhttpサーバーを起動します
これはhttp://localhost:8080
からアクセス可能な静的ファイルとしてあなたのディレクトリのファイルを提供するNode.js httpdを回転させます
あなたの好みの言語がRubyであるなら... Rubyの神々はこれが同様に働くと言います:
Ruby -run -e httpd . -p 8080
もちろんPHPにも解決策があります。
php -S localhost:8000
今日はこれに走った。
私はこのように見えるいくつかのコードを書きました:
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;
});
});
唯一の違いは、2番目のコードにhttp://
がないことです。
同様の問題を抱えている人が他にいる場合に備えて、それをそこに出したかっただけです。
URLをlocalhost
ではなくhttp://localhost
に変更するだけです。 localからhtmlファイルを開く場合は、そのhtmlファイルを扱うローカルサーバーを作成する必要があります。最も簡単な方法は Web Server for Chrome
を使用することです。これで問題は解決します。
Androidアプリで - たとえば、JavaScriptがfile:///Android_asset/
を介してアセットにアクセスできるようにするには、WebSettings
でsetAllowFileAccessFromFileURLs(true)
を呼び出して取得したWebView
でgetSettings()
を使用します。
Mozilla Firefoxを使用している場合は、問題なく動作します。
P.S IE_Edgeでさえ、驚くほどうまく機能します。
私にとって最速の方法は次のとおりでした:WindowsユーザーがFirefoxでファイルを実行して問題を解決するか、chromeを使用する場合、Python 3をインストールしてからコマンドプロンプト実行コマンドpython -m http.server
次に http:// localhost:8000 / に移動し、ファイルに移動します
python -m http.server
私はこの問題を解決するために3つの異なるアプローチをリストアップするつもりです:
npm
パッケージを使う: live-server using npm install -g live-server
。次に、そのディレクトリに移動して端末を開き、live-server
と入力してEnterキーを押します。ページはlocalhost:8080
で提供されます。ボーナス:それはまたデフォルトでホットリロードをサポートしています。target
を"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
に編集して保存します。それからChromeを使ってctrl+o
を使ってページを開きます。注:NOTは通常の閲覧にこのショートカットを使用してください。URLを作成するにはhttp://
またはhttps://
を使用してください
エラー :localhost:8080
解決策 :http://localhost:8080
ローカルディレクトリからjsonファイルを使用しているブラウザでHTMLファイルをロードするとき、私はこの正確なエラーを得ていました。私の場合は、静的コンテンツを処理できる単純なノードサーバーを作成することでこれを解決できました。私はこれのためにこのコードを残しました 他の答え 。
Localhostでこれらの種類のアプリケーションを実行するにはミニサーバーを使用することをお勧めします(内蔵サーバーを使用していない場合)。
これは、設定と実行が非常に簡単なものです。
https://www.npmjs.com/package/tiny-server
それは単にアプリケーションがWebサーバー上で実行されるべきだと言うだけです。私はクロムと同じ問題を抱えていた、私はTomcatを始め、私のアプリケーションをそこに動かし、そしてそれはうまくいった。
私はそれがすでにいくつかの答えの中で言及されているのではないかと思うが、私はこれをわずかに修正して完全な実用的な答えを得よう(見つけやすく使いやすい)。
https://nodejs.org/en/download/ にアクセスしてください。 nodejsをインストールしてください。
コマンドプロンプトnpm install -g http-server
からコマンドを実行してhttp-serverをインストールします。
index.html
/yoursome.html
が存在する作業ディレクトリに移動します。
コマンドhttp-server -c-1
を実行してhttpサーバーを起動します。
Webブラウザを開いて、http://localhost:8080
またはhttp://localhost:8080/yoursome.html
- htmlファイル名に応じて - を開きます。
次のhref付きのアンカータグを使用すると、このエラーメッセージを再現することもできました。
<a href="javascript:">Example a tag</a>
私の場合、タグは 'Pointer Cursor'を取得するために使用されており、イベントは実際にはクリックイベントのjQueryによって制御されていました。 hrefを削除して、適用されるクラスを追加しました。
cursor:pointer;
すべてのあなたにとってMacOS
...シンプルな LaunchAgent を設定して、 Chrome の自分のコピーでこれらの魅力的な機能を有効にしてください。
whatever (launch.chrome.dev.mode.plist
など)という名前のplist
を~/Library/LaunchAgents
に保存します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>launch.chrome.dev.mode</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Google Chrome.app/Contents/MacOS/Google Chrome</string>
<string>-allow-file-access-from-files</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
起動時に should で起動する必要がありますが、terminalコマンドを使用していつでも強制的に起動できます。
launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist
TADA! ???? ???????? ???? ????????
サーバなしで静的ローカルファイル(例:svg)をロードすることはできません。あなたのマシンにNPM/YARNがインストールされていれば、 " http-server "を使って簡単なhttpサーバーをセットアップすることができます。
npm install http-server -g
http-server [path] [options]
またはそのプロジェクトフォルダでターミナルを開き、 "hs"と入力します。 HTTPライブサーバーを自動的に起動します。
あー。 「dojo/textプラグインを使用する未ビルドのリモートAMDモジュールをロードしようとしても、Origin間のセキュリティ制限のために失敗することがあります。ビルドシステムです。 "" https://dojotoolkit.org/documentation/tutorials/1.10/cdn/
ローカルファイルをロードする方法の1つは、プロジェクトフォルダの外部ではなくプロジェクトフォルダでそれらを使用することです。プロジェクトのサンプルファイルの下に1つのフォルダを作成してイメージ用に作成したのと同じようにして、プロジェクトパス以外の完全なローカルパスを使用するセクションを置き換えます。