【发布时间】:2013-07-30 08:25:03
【问题描述】:
我正在尝试在 .NET 4.0 应用程序中使用 CefSharp web browser。
我从本地存储的 html 和 js 内容加载页面。因此网络浏览器使用file:// 协议打开页面。
页面转换是用 jQuery (ajax) 实现的,我得到一个 XMLHttpRequest cannot load file:///XXXXXXXX/Debug/res/www/shared/js/src/views/homeView.html. Cross origin requests are only supported for HTTP.
我尝试使用 Schemehandler 并覆盖 ProcessRequest 函数来处理 file:// 域内的页面加载。
class SchemeHandlerFactory : ISchemeHandlerFactory
{
public ISchemeHandler Create()
{
return new SchemeHandler();
}
}
class SchemeHandler : ISchemeHandler
{
public SchemeHandler()
{
}
public bool ProcessRequest(IRequest request, ref string mimeType, ref Stream stream)
{
var uri = new Uri(request.Url);
var segments = uri.Segments;
var file = segments[segments.Length - 1];
var bytes = File.ReadAllBytes(request.Url.Replace("file:///",""));
stream = new MemoryStream(bytes);
mimeType = "text/html";
return true;
}
}
我在我的表单代码中使用它:
CEF.RegisterScheme("file", new SchemeHandlerFactory());
它不会改变任何东西。
我检查了 CefSharp repo 上的提交日志,它说现在支持 Cross AppDomain 但我该如何使用它? https://github.com/cefsharp/CefSharp/pull/35
我还考虑过重新编译 CefSharp 以将 Access-Control-Allow-Origin 添加到 Web 浏览器在对本地文件执行 GET 操作时返回的所有请求中.
我没有想法。
【问题讨论】:
标签: c# xmlhttprequest cross-domain chromium-embedded cefsharp