详细解读CococCreator跨域访问资源服务器

简介: 详细解读CococCreator跨域访问资源服务器

需求与思路

项目上线前有一个需求

游戏资源需要存放在cdn上

而游戏入口一般是通过运营渠道的服务器进入(服务器A)

玩家需要通过服务器A的游戏页面请求资源服务器B的游戏资源

这样就产生了跨域问题

(版本ccc1.3.3)转载请注明原文地址

具体来说问题可能有以下两个

1.浏览器跨域(本文解决)

2.WebGL模式禁止跨域(没有遇到,可能是引擎避开了这个问题)

网页技术处理跨域问题有多种解决方案

这里通过修改服务端响应头header

eg:

//任意ip均不受跨域限制

header('Access-Control-Allow-Origin:');

//指定IP如服务器A不受跨域限制

header('Access-Control-Allow-Origin: http(s)://yourdomain(or IP):port');

原理和思路大概就这么多

实现起来要小费一番周折

一方面要搭建服务器模拟资源服务器

另一方面要修改Creator引擎js源码

NodeJS搭建资源服务器

下载NodeJS并安装express

编写服务端程序代码如下

var express = require('express');

var app = express();

app.use(express.static('public'));

// 设置跨域头部

app.all('', function(req, res, next) {

res.header("Access-Control-Allow-Origin", "*");

res.header("Access-Control-Allow-Headers", "X-Requested-With");

res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");

res.header("X-Powered-By",' 3.2.1')

res.header("Content-Type", "application/json;charset=utf-8");

next();

});

// 主页输出 "Hello World"

app.get('/', function (req, res) {

console.log("主页 GET 请求");

res.send('Hello GET');

})

// 返回图片

app.get('/image', function(req, res) {

res.sendfile(__dirname + '/runoob-logo.png');

})

// 启动服务

var server = app.listen(3000, function () {

var host = server.address().address

var port = server.address().port

console.log("应用实例,访问地址为 ", (new Date()).toLocaleString(), port)

})

命令行中键入node 【路...径】app.js 启动服务程序

打开浏览器后,即如上图所示

修改图片下载模块

首先找到下载模块

engine/cocos2d/core/load-pipeline/downloader.js

function downloadImage(item, callback, isCrossOrigin, img) {

void 0 === isCrossOrigin (isCrossOrigin = true);

var url = urlAppendTimestamp(item.url);

img = img || new Image();

isCrossOrigin "file:" !== window.location.protocol ? img.crossOrigin = "anonymous" : img.crossOrigin = null;

if (img.complete img.naturalWidth > 0 img.src === url) {

callback(null, img);

} else {

function loadCallback() {

img.removeEventListener("load", loadCallback);

img.removeEventListener("error", errorCallback);

callback(null, img);

}

function errorCallback() {

img.removeEventListener("load", loadCallback);

img.removeEventListener("error", errorCallback);

"https:" !== window.location.protocol img.crossOrigin "anonymous" === img.crossOrigin.toLowerCase() ? downloadImage(item, callback, false, img) : callback("Load image (" + url + ") failed");

}

img.addEventListener("load", loadCallback);

img.addEventListener("error", errorCallback);

//img.src = url;

if(url.indexOf("testSprite") >= 0)

url = ""

img.src = url;

cc.log("test3 downloadImage" , url)

}//代码效果参考:http://www.ezhiqi.com/bx/art_5391.html

}

if(url.indexOf("testSprite") >= 0)

相关文章
|
6月前
|
存储 数据挖掘 Linux
服务器数据恢复—重装系统导致OceanStor存储上的分区无法访问的数据恢复案例
服务器存储数据恢复环境: 华为OceanStor某型号存储+扩展盘柜,存储中的硬盘组建了raid5磁盘阵列,上层分配了1个lun。 linux操作系统,划分了两个分区,分区一通过lvm扩容,分区二为xfs文件系统。 服务器存储故障: 工作人员重装系统操作失误导致磁盘分区变化,分区二无法访问,数据丢失。
|
11月前
|
缓存 人工智能 架构师
释放数据潜力:利用 MCP 资源让大模型读懂你的服务器
MCP(Model Control Protocol)资源系统是将服务器数据暴露给客户端的核心机制,支持文本和二进制两种类型资源。资源通过唯一URI标识,客户端可通过资源列表或模板发现资源,并使用`resources/read`接口读取内容。MCP还支持资源实时更新通知及订阅机制,确保动态数据的及时性。实现时需遵循最佳实践,如清晰命名、设置MIME类型和缓存策略,同时注重安全性,包括访问控制、路径清理和速率限制等。提供的示例代码展示了如何用JavaScript和Python实现资源支持。
1092 80
|
8月前
|
机器学习/深度学习 人工智能 运维
“服务器老是爆?资源老是浪费?试试用 AI 来规划容量!”
“服务器老是爆?资源老是浪费?试试用 AI 来规划容量!”
223 4
|
7月前
|
存储 安全 数据管理
服务器违规资源被删,数据定时备份OSS 云存储才是 “救命稻草”
在数字化时代,数据已成为企业与个人的核心资产。然而,服务器违规、硬件故障等问题频发,导致数据丢失、业务中断,甚至造成不可挽回的损失。为保障数据安全与业务连续性,定时备份至关重要。阿里云国际站OSS提供高效、可靠的云存储解决方案,支持自动定时备份,帮助用户轻松应对数据风险。本文详解OSS备份操作步骤与注意事项,助你为数据穿上“防护甲”,实现安全无忧存储。
|
9月前
|
C# 图形学 开发者
Unity开发中使用UnityWebRequest从HTTP服务器下载资源。
总之,UnityWebRequest就是游戏开发者手中的万能钓鱼竿,既可以获取文本数据,也能钓上图片资源,甚至是那声音的涟漪。使用UnityWebRequest的时候,你需要精心准备,比如确定URL、配置请求类型和头信息;发起请求;巧妙处理钓获的数据;还需要机智面对网络波澜,处理各种可能出现的错误。按照这样的过程,数据的钓取将会是一次既轻松愉快也效率高效的编程钓鱼之旅。
499 18
|
11月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
789 28
|
12月前
|
自然语言处理 安全 开发工具
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
1343 4
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
587 6
|
弹性计算 运维 Kubernetes
使用ACK Edge统一管理多地域的ECS资源
本文介绍如何使用ACK Edge来管理分布在多个地域的ECS资源。

热门文章

最新文章