2017-06-25 8 views
0

私はしかし、このエラーにイメージ結果をロードpixi.jsライブラリを使用して、私のローカル・ホスト・サーバーからの簡単なテスト画像をロードしようとしている:ローカルサーバーからイメージをロードするときに、「No-Access-Control-Allow-Origin 'ヘッダーが要求されたリソースに存在しますか?

Access to Image at 
'http://localhost:8080/local_files/assests/images/test_image.jpg' from origin 'null' 
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present 
on the requested resource. Origin 'null' is therefore not allowed access. 

私のコードイメージをロードする:

//load test image 
var texture = PIXI.Texture.fromImage("http://localhost:8080/local_files/assests/images/test_image.jpg"); 
+0

ローカルファイルシステムからHTMLファイルをロードしているようですか?つまり、 'file:///' URLを経由します。 – shaochuancs

答えて

0

許可元 - 一般に、あなたがいるドメインと同じドメインにあるリソースだけを読み込むことを許可されていることを意味します。したがって、 "localhost"リソースをロードする場合は、localhostにする必要があります。 しかし、この場合、問題はおそらく、ローカルリソースへのアクセス権を持たないリモートサーバからローカルホストリソースをロードしようとしているだけです。

リモートサーバーでイメージを使用することを忘れないでください。可能であれば、すべてのリソース(イメージ、jsファイルなど)に同じドメインを使用してください。静的リソースの場合、絶対パスの代わりに(http://localhost/images/image.pngの代わりに "./images/image.png")リレーショナルパスを使用するのが最も簡単な方法です。

私は、これは

+1

実際には、ブラウザによっては、ローカル静的リソース上で同じ[同じ発信元ポリシー]動作があります。画像にリレーショナルパスを使用すると、FirefoxとSafariでは正常に動作しますが、ChromeではCORSエラーが報告されます。 – shaochuancs

+0

@shaochuancsあなたは正しいです。しかし、質問がかなり一般的だったので、私は一般的な答えを出しました。一般に、クロスオリジンは、主にajaxリクエストに存在するクロスサイトスクリプティングの問題(ダイナミックに作成された静的ファイルを使用してサイトを利用することができますが、通常はそうではない)。私の友人はおそらく間違って相対パスを使用する代わりにlocalhostパスを使用している –

+0

@shaochuancsと申し訳ありませんが、あなたの主なポイントを逃した:)私は彼がlocalhostでファイルを使用し続けることを決して意味しませんでした。私は、彼のファイルをサーバに移動し、それらを相対的に処理するように彼に勧めました –

0

画像が別のドメインからロードされた場合に画像リソースはJavaScript(編集など)によって操作されたときに、Same Origin Policyが適用されるのに役立ちます願っています。

この場合、HTMLはローカルファイルシステム(原点はnull)からロードされますが、画像はhttp://localhost:8080からロードされます。したがって、pixi.jsを使用して画像を操作(画像データを読み込んでテクスチャとして保存)すると、http://localhost:8080CORSをサポートしないため、ブラウザはエラーを報告します。この問題を解決するには

、2つの方法があります:http://localhost:8080

  1. 展開HTMLファイルと、そこからそれをロードするには。
  2. CORShttp://localhost:8080で有効にします。
関連する問題