quickstart htaccess example bar c# xmlhttprequest cross-domain chromium-embedded cefsharp

c# - htaccess - CefSharp y Crossdomain



cefsharp quickstart (2)

Encontré la solución, aquí está si alguien necesita ayuda con esto:

BrowserSettings browserSettings = new BrowserSettings(); browserSettings.FileAccessFromFileUrlsAllowed = true; browserSettings.UniversalAccessFromFileUrlsAllowed = true; browserSettings.TextAreaResizeDisabled = true; string urlToNavigate = Application.StartupPath + @"/res/www/shared/index.html"; web_view = new WebView(urlToNavigate, browserSettings);

Necesitamos poner FileAccessFromFileUrlsAllowed en true y UniversalAccessFromFileUrlsAllowed .

Intento utilizar el navegador web CefSharp dentro de una aplicación .NET 4.0. Cargué páginas de contenido html y js almacenadas localmente. Entonces, el navegador web abre las páginas con el protocolo file:// .

Las transiciones de página se realizan con jQuery (ajax) y obtengo un XMLHttpRequest cannot load file:///XXXXXXXX/Debug/res/www/shared/js/src/views/homeView.html. Cross origin requests are only supported for HTTP. XMLHttpRequest cannot load file:///XXXXXXXX/Debug/res/www/shared/js/src/views/homeView.html. Cross origin requests are only supported for HTTP.

Intenté usar un Schemehandler y anular la función ProcessRequest para manejar las cargas de página dentro del dominio 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; } }

Y lo uso en mi código de formulario agregando:

CEF.RegisterScheme("file", new SchemeHandlerFactory());

no cambia nada

Revisé los registros de confirmación en el repositorio de CefSharp y dice que el Cross AppDomain ahora es compatible, pero ¿cómo lo uso? https://github.com/cefsharp/CefSharp/pull/35

También pensé en recompilar CefSharp para agregar Access-Control-Allow-Origin a todas las solicitudes devueltas por el navegador web cuando ejecuta la operación GET en archivos locales.

Estoy sin ideas.


Este código funciona en el CEF : r3.2987.1601 (formularios de Windows)

browser = new ChromiumWebBrowser("www.websites.com") { Dock = DockStyle.Fill, }; toolStripContainer.ContentPanel.Controls.Add(browser); //browser.BrowserSettings.WebSecurity = CefState.Disabled; browser.BrowserSettings.FileAccessFromFileUrls = CefState.Enabled; browser.BrowserSettings.UniversalAccessFromFileUrls = CefState.Enabled;

https://github.com/cefsharp/CefSharp/issues/1397

Ten mucho cuidado con lo siguiente:

//browser.BrowserSettings.WebSecurity = CefState.Disabled;

Este código deja su computadora vulnerable a ataques maliciosos.