如何为 Unity3D 绕过或设置 CORS?
How can I bypass or set up CORS for Unity3D?
我正在尝试获取调用服务器 运行 Unity3D 的 WebGL 游戏,但是,我遇到了这个问题:
XMLHttpRequest 无法加载 http://api.playerio.com/api/13. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.teonnyn.com' 因此不允许访问。
有人遇到过这种情况吗?我做了一些研究,它似乎在尝试使用 CORS.. 但我无法直接控制服务器代码,超出我自己的位,设置 .htaccess 似乎不起作用。
我不熟悉 playerio.com
,但如果他们希望游戏网页联系他们的服务器,那么他们需要实施 CORS,而您无需执行任何操作(除了在您的服务器上实施专门的代理外)服务器)。
另一方面,也许您应该使用来自您的服务器的API,而不是您的客户?
记住多人游戏开发的规则:不要相信客户端,因为玩家可以修改它。 (如果您的客户端是浏览器 JS,这尤其容易。)因此,如果进行 API 调用可能是一种作弊形式,那么您需要从服务器发送它们,以便您可以控制内容。
无法访问服务器提供图像您无能为力。
您需要服务器支持 CORS 并且您需要使用 CORS 请求图像,这意味着仅从支持 CORS 的服务器请求图像是不够的。您还必须告诉浏览器您希望它检查 CORS 权限。 From MDN
In order to load it with CORS as a WebGL texture, we set the crossOrigin attribute on it:
var earthImage = new Image();
earthImage.crossOrigin = "anonymous";
Now we load it as usual:
earthImage.onload = function() {
// whatever you usually to do load WebGL textures
};
earthImage.src = "http://khm0.googleapis.com/kh?v=95&x=0&y=0&z=0";
之所以需要专门请求 CORS,是因为 CORS 权限需要浏览器和服务器之间进行额外的协商。由于速度较慢,因此不是默认设置。
至于支持 CORS 的图像服务器,如果您无法访问该服务器,唯一的其他方法是使用另一台服务器并让该服务器获取图像,然后使用 CORS 将其发送给您.
否则,您需要将所有图片与您的网页放在同一台服务器上。
事实证明,这完全是在雅虎游戏网络方面。尽管他们声称支持 Unity 的 WebGL 功能,但他们试图让您将它上传到他们的自定义 Web 主机,而不是让您 运行 它在您自己的站点上。因此,我遇到了 CORS 错误。 None这个在文档中有说明,必须学习
我正在尝试获取调用服务器 运行 Unity3D 的 WebGL 游戏,但是,我遇到了这个问题:
XMLHttpRequest 无法加载 http://api.playerio.com/api/13. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.teonnyn.com' 因此不允许访问。
有人遇到过这种情况吗?我做了一些研究,它似乎在尝试使用 CORS.. 但我无法直接控制服务器代码,超出我自己的位,设置 .htaccess 似乎不起作用。
我不熟悉 playerio.com
,但如果他们希望游戏网页联系他们的服务器,那么他们需要实施 CORS,而您无需执行任何操作(除了在您的服务器上实施专门的代理外)服务器)。
另一方面,也许您应该使用来自您的服务器的API,而不是您的客户?
记住多人游戏开发的规则:不要相信客户端,因为玩家可以修改它。 (如果您的客户端是浏览器 JS,这尤其容易。)因此,如果进行 API 调用可能是一种作弊形式,那么您需要从服务器发送它们,以便您可以控制内容。
无法访问服务器提供图像您无能为力。
您需要服务器支持 CORS 并且您需要使用 CORS 请求图像,这意味着仅从支持 CORS 的服务器请求图像是不够的。您还必须告诉浏览器您希望它检查 CORS 权限。 From MDN
In order to load it with CORS as a WebGL texture, we set the crossOrigin attribute on it:
var earthImage = new Image(); earthImage.crossOrigin = "anonymous";
Now we load it as usual:
earthImage.onload = function() { // whatever you usually to do load WebGL textures }; earthImage.src = "http://khm0.googleapis.com/kh?v=95&x=0&y=0&z=0";
之所以需要专门请求 CORS,是因为 CORS 权限需要浏览器和服务器之间进行额外的协商。由于速度较慢,因此不是默认设置。
至于支持 CORS 的图像服务器,如果您无法访问该服务器,唯一的其他方法是使用另一台服务器并让该服务器获取图像,然后使用 CORS 将其发送给您.
否则,您需要将所有图片与您的网页放在同一台服务器上。
事实证明,这完全是在雅虎游戏网络方面。尽管他们声称支持 Unity 的 WebGL 功能,但他们试图让您将它上传到他们的自定义 Web 主机,而不是让您 运行 它在您自己的站点上。因此,我遇到了 CORS 错误。 None这个在文档中有说明,必须学习