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.