websharperで少し遊んで、私のシステムでwebglデモを実行しようとしました。与えられたデモコードをSinglePageアプリケーションで使用できるように変更しました。また、デモで使用したテクスチャを、実際に私のシステム上にあるテクスチャに変更しました。websharper webglデモセキュリティの問題?
let MakeAndBindTexture (gl : WebGL.RenderingContext) f =
Img []
|>! Events.OnLoad (fun img ev ->
let tex = gl.CreateTexture()
gl.ActiveTexture(gl.TEXTURE0)
gl.BindTexture(gl.TEXTURE_2D, tex)
gl.PixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img.Dom)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
f())
|> fun img -> img -< [Attr.Src "mandel.jpg"] // <<-- located in project root
|> ignore
テストもGoogleのクロム、(関与なしWebサーバと - プロジェクトのルートフォルダから実行しているindex.htmlを、私は次のエラーログを取得:成功した一方で、
SinglePageApplication1.min.js:42 Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The cross-origin image at file:///E:/R/playground/ConsoleApplication7/SinglePageApplication1/mandel.jpg may not be loaded.
マイクロソフトのエッジを実行され、期待される結果を生成します。
今は、もちろん私は他の部分と同じパスに.JPGがGoogleクロームでセキュリティエラーが発生することがありますか、疑問に思う。
また、どういうわけかGoogle Chromeで動作させる機会があるのだろうか...
たとえば、... min.jsファイルの横にある他の場所も、mandel.jpgで試してみました。しかし、すべての場所で同じエラーが発生しました。
意味がありますが、私の目には、これは非常にraです彼らが作った決定。だからサーバレスhtmlは大丈夫です... um ... no ...スクリプト読み込み作業...そして... cssファイル読み込み作業...しかし画像をロードする方法はありませんか?彼らは私の意見でそれを乗り越え、ローカルファイルシステムから何かをロードすることを拒否するべきです。 – BitTickler
問題は* who *が読み込み中です。 Chromeは自分のレンダリングエンジン*を信頼して悪意のあるものを実行せずにファイルを読み込んで表示するが、ランダムなスクリプトが本当に何をしているのかは分かりません。つまり、別のファイルを取得する ''タグはうまく表示されますが、スクリプトは画像を直接読み込むことも、そのタグの内容にアクセスすることもできません(原点が異なります)。 – piaste
彼は何を言ったのですか?**使用しないでください! 「SuaveやIISのようなサーバをインストールするのに苦労する必要はありませんLinuxやOSXを使っている場合は、あなたのファイルでフォルダに移動し、 'python -m SimpleHTTPServer'と打ってください。どんなOSであれ、別のオプションは[devd](https://github.com/cortesi/devd)です。スーパーシンプル。小さなファイルで、動作します。 – gman