94版本之后的谷歌和Edge浏览器 出现CORS跨域错误解决办法
在高版本的Chrome和Edge下,浏览器默认是开启Block insecure private network requests.这个选项的。也就是默认禁止跨域请求,所以在访问一些没有符合最新标准的老网站时,可能会发现出现如图所示的CORS跨域请求错误,从而导致不能正确打开该网站。
解决办法:
1、谷歌浏览器输入,修改下图属性。
1 chrome://flags/
2、Edge浏览器输入,修改下图属性。
1 edge://flags/
3、操作注册表解决,可以直接在注册表添加对应的项和键值对。 也可以在代码里添加(附上C#代码 )
附上C#代码 :
1 /// <summary> 2 /// 初始化注册表信息 3 /// </summary> 4 /// <exception cref="NotImplementedException"></exception> 5 private static void InitRegisteredInfo() 6 { 7 //谷歌 8 InitSiteConfiguration(@"SOFTWARE\Policies\Google\Chrome"); 9 //Edge 10 InitSiteConfiguration(@"SOFTWARE\Policies\Microsoft\Edge"); 11 14 } 15 16 /// <summary> 17 /// 解决CORS跨域错误问题 18 /// 指定是否允许不安全网站向更专用网络上的端点发送请求 1是 0否 19 /// </summary> 20 /// <exception cref="NotImplementedException"></exception> 21 private static void InitSiteConfiguration(string settingPath) 22 { 23 RegistryKey regkey = Registry.LocalMachine.OpenSubKey(settingPath, true); 24 if (regkey == null) 25 regkey = Registry.LocalMachine.CreateSubKey(settingPath); 26 var valueNames = regkey.GetValueNames(); 27 if (valueNames.Length == 0) 28 { 29 regkey.SetValue("InsecurePrivateNetworkRequestsAllowed", 1, RegistryValueKind.DWord); 30 regkey.Close(); 31 return; 32 } 33 foreach (var name in valueNames) 34 { 35 if (name == "InsecurePrivateNetworkRequestsAllowed" && regkey.GetValue(name).ToString() == "1") 36 { 37 return; 38 } 39 } 40 regkey.SetValue("InsecurePrivateNetworkRequestsAllowed", 1, RegistryValueKind.DWord); 41 regkey.Close(); 42 }