环境: winform、c#、.netframework4.6、CefSharp.Winforms 71.0.2
部署环境:
1. 客户端为winform+cefsharp开发的,html文件是放在客户端的
2. 服务端使用.netcore开发,使用https协议,用户的是开发时候的证书,部署在了公网
问题:
1. 客户端发起ajax请求到服务端浏览器总是显示(canceled)
2. 但是访问百度的https请求又正常(https://www.baidu.com)
截图如下:
确定问题所在:
经反复试验:推测是证书的问题,因为http都是正常的,并且百度的https也是正常,也就是自己搞的证书并不被csfsharp信任!
解决问题:
添加如下几行代码,设置cefsharp忽略证书的权威性校验
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
//忽略https证书的问题
var settings = new CefSettings();
settings.CefCommandLineArgs.Add("--ignore-urlfetcher-cert-requests", "1");
settings.CefCommandLineArgs.Add("--ignore-certificate-errors", "1");
//禁止启用同源策略安全限制,禁止后不会出现跨域问题
settings.CefCommandLineArgs.Add("--disable-web-security", "1");
Cef.Initialize(settings);
//....
}
}
附:其他关于cefsharp的设置
https://peter.sh/experiments/chromium-command-line-switches/