【问题标题】:Haxe / OpenFL solving CORS error without having access to the server?Haxe / OpenFL 在无法访问服务器的情况下解决 CORS 错误?
【发布时间】:2018-05-01 16:58:30
【问题描述】:

我知道有很多关于 HTML5 标记中的 CORS 政策的问题。

他们都在谈论服务器端设置,您需要更改服务器设置中的访问标头或自己将标头放入 php 文件等。

但我正在使用Loader 类加载图像,但我无权访问该服务器。

如何更改:

Access-Control-Allow-Origin*

我尝试使用 URL 请求推送标头:

urlRequest.requestHeaders.push( new URLRequestHeader( 'Access-Control-Allow-Origin', '*' ) );

但不管我做了什么:

我得到这个错误:

完整代码sn-p:

loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoadComplete);

var request:URLRequest = new URLRequest();
request.url = "http://www.someserver.com/some_image.jpg";

request.contentType = "image/jpeg"; //tried it didn't make a difference
request.requestHeaders.push( new URLRequestHeader( 'Access-Control-Allow-Origin', '*' ) );

loader.load(request);

【问题讨论】:

    标签: haxe openfl


    【解决方案1】:

    为了启用跨域请求,您需要在服务器端添加标头。另一种方法是禁用网络安全:

    Disable same origin policy in Chrome

    在 OpenFL 6.3.0(在 6.4.0 发布之前)有一个时间窗口,openfl.net.Loader(关于 CORS)的默认行为出现了回归,但这在 OpenFL 6.4 中得到了解决。 0 或更高版本。

    【讨论】:

    • 谢谢 Joshua Granick 我安装了这个扩展:link 并且成功了。
    【解决方案2】:

    这是出于开发目的吗?我只是因为涉及127.0.0.1 URL 而问。看起来您在127.0.0.1:3000 上托管您的游戏并在www.___.com/___.jpg 上请求一个URL,对吗?

    不专门考虑 OpenFL,一个典型的解决方案是 127.0.0.1:3000 的服务器可以具有代理功能,从另一个 Web 服务器获取和提供图像,这样浏览器就不会看到差异。

    这在现实世界中对您没有帮助,但如果您谈论的是开发环境,也许这是一种解决方法。

    【讨论】:

    • 是的,我正在我的本地主机中对其进行测试,但安装扩展程序允许我对其进行测试。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2023-01-06
    • 1970-01-01
    • 2021-11-30
    • 2019-05-24
    • 2018-08-01
    • 2012-11-17
    相关资源
    最近更新 更多