浏览器开发CEF(二十三)C#skill跨域服务源码openclaw——东方仙盟元婴期
结合你的业务场景(局域网手机语音控制浏览器),我整理了。


标准化跨域配置(我优化后的完整版本)

结合你的业务场景(局域网手机语音控制浏览器),我整理了生产级、无坑的跨域配置方法,适配 HttpListener 且兼容移动端浏览器:
public void ProcessRequest(HttpListenerContext httpListenerContext)
{
// 1. 统一设置跨域头(OPTIONS 和 POST 都需要)
未来之窗_SetCorsHeaders(httpListenerContext.Response);
// 2. 处理 OPTIONS 预检请求(核心:只返回头,不处理业务)
if (httpListenerContext.Request.HttpMethod == "OPTIONS")
{
httpListenerContext.Response.StatusCode = (int)HttpStatusCode.OK;
httpListenerContext.Response.ContentLength64 = 0; // 无响应体
httpListenerContext.Response.Close();
return; // 必须return,避免执行后续逻辑
}
/// <summary>
/// 标准化跨域响应头配置(适配移动端/局域网跨域,语音控制浏览器专用)
/// </summary>
/// <param name="response">HttpListener响应对象</param>
/// <param name="allowCredentials">是否允许携带凭证(如Cookie,移动端跨域需开启则设为true)</param>
/// <param name="allowedOrigin">允许的跨域源(局域网可设为*,生产环境替换为具体IP/域名)</param>
private void 未来之窗_AddCorsHeaders_Standard(HttpListenerResponse response, bool allowCredentials = false, string allowedOrigin = "*")
{
// 核心:允许的跨域源(局域网手机访问需放开)
response.AddHeader("Access-Control-Allow-Origin", allowedOrigin);
// 支持移动端常用请求方法(含OPTIONS预检)
response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
// 覆盖移动端AJAX请求常见头(语音控制需Content-Type/Authorization)
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept, X-Requested-With");
// 预检请求缓存1天,减少OPTIONS请求次数(提升移动端响应速度)
response.AddHeader("Access-Control-Max-Age", "86400");
// 可选:允许移动端携带凭证(如登录态,需配合allowedOrigin为具体IP,不能是*)
if (allowCredentials)
{
response.AddHeader("Access-Control-Allow-Credentials", "true");
}
// 保障响应编码(移动端中文语音指令不乱码)
response.ContentEncoding = System.Text.Encoding.UTF8;
}
基于你的原有代码优化(保留你的命名 + 修复问题)
修正你原有代码的重复头、语法问题,适配「人工智能与残疾交互」的核心场景:

HttpListenerContext httpListenerContext = null;
try
{
// 阻塞等待请求
httpListenerContext = httpListener.GetContext();
// 提前初始化 StreamReader(注意编码,避免乱码)
StreamReader reader = new StreamReader(
httpListenerContext.Request.InputStream,
Encoding.UTF8);
// 1. 统一设置跨域头(OPTIONS 和 POST 都需要)
未来之窗_SetCorsHeaders(httpListenerContext.Response);
// 2. 处理 OPTIONS 预检请求(核心:用 continue 跳过后续逻辑)
if (httpListenerContext.Request.HttpMethod == "OPTIONS")
{
httpListenerContext.Response.StatusCode = (int)HttpStatusCode.OK;
httpListenerContext.Response.ContentLength64 = 0; // 无响应体
httpListenerContext.Response.Close();
continue; // 替代 return,跳过本次循环的后续代码
}
// 3. 处理 POST/GET 请求(OPTIONS 已被 continue 跳过)
string req = reader.ReadToEnd(); // 读取请求体
string url = httpListenerContext.Request.RawUrl; // 获取请求URL
/// <summary>
/// 添加跨域响应头(适配局域网手机语音控制浏览器)
/// </summary>
private void 未来之窗_AddCorsHeaders(HttpListenerResponse response)
{
response.AddHeader("Access-Control-Allow-Origin", "*");
response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
// 合并重复的Headers,避免覆盖(原代码重复添加Content-Type会丢失其他头)
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept");
response.AddHeader("Access-Control-Max-Age", "86400");
}
/// <summary>
/// 设置跨域响应头(兼容Headers.Add/AddHeader两种写法)
/// </summary>
private void 未来之窗_SetCorsHeaders(HttpListenerResponse response)
{
// 统一用AddHeader(避免Headers.Add的兼容性问题)
response.AddHeader("Access-Control-Allow-Origin", "*");
response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
// 修复:合并所有需要的头,不重复添加(原代码重复添加导致仅保留Content-Type)
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept");
}
适配「人工智能与残疾交互」场景的关键说明
-
局域网跨域适配:
- 手机和浏览器后台在同一局域网时,
Access-Control-Allow-Origin设为*即可(或具体手机 IP,如http://192.168.1.100:8080); - 语音控制的请求多为 POST(传递语音转文字的指令),需确保
Access-Control-Allow-Methods包含 POST。
- 手机和浏览器后台在同一局域网时,
-
移动端兼容性:
- 合并
Access-Control-Allow-Headers,避免重复添加导致部分头丢失(原代码的核心问题); - 设置
Access-Control-Max-Age减少预检请求,提升语音指令的响应速度。
- 合并
-
无障碍交互优化:
- 响应编码强制 UTF8,避免语音转文字的中文指令乱码;
- 若需要保存用户的语音控制配置(如 Cookie),开启
Access-Control-Allow-Credentials = true,并将allowedOrigin设为手机的具体 IP(不能用 *)。
东方仙盟:拥抱知识开源,共筑数字新生态
在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。我们相信,唯有打破技术壁垒、汇聚全球智慧,才能真正推动行业的可持续发展。
开源赋能中小商户:通过将前端异常检测、跨系统数据互联等核心能力开源化,东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案,让更多商家能够平等享受数字转型的红利。
共建行业标准:我们积极参与国际技术社区,与全球开发者、合作伙伴共同制定开放协议 与技术规范,推动跨境零售、文旅、餐饮等多业态的系统互联互通,构建更加公平、高效的数字生态。
知识普惠,共促发展:通过开源社区、技术文档与培训体系,东方仙盟致力于将前沿技术转化为可落地的行业实践,赋能全球合作伙伴,共同培育创新人才,推动数字经济 的普惠式增长
阿雪技术观
在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基 生命,为科技进步添砖加瓦。
Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology
更多推荐


所有评论(0)