【问题标题】:CefSharp: JavaScript fetch() call doesn't make the pre-flight OPTIONS callCefSharp:JavaScript fetch() 调用不会进行飞行前 OPTIONS 调用
【发布时间】:2020-01-09 00:32:20
【问题描述】:

使用 CefSharp 71 版。

从 JavaScript 进行 fetch() 调用时,理想情况下,它应该在进行 GET/POST 调用之前进行飞行前的 OPTIONS 调用。

但实际上并没有成功。 但是,如果我在 Chrome 浏览器中尝试它,它确实如此。

在 Chrome 浏览器上试过这个,它确实会进行飞行前的 OPTIONS 调用。

这样做的结果是,由于没有进行 OPTIONS 调用,CORB 正在停止响应。 错误是: 跨域读取阻塞 (CORB) 阻止了 MIME 类型 application/json 的跨域响应 https://some-api.com/blah。详情请见https://www.chromestatus.com/feature/5629709824032768

【问题讨论】:

标签: javascript c# cefsharp chromium-embedded


【解决方案1】:

看起来WebSecurity 在您的BrowserSettings 中设置为禁用。

browserPlay.BrowserSettings = new BrowserSettings()
{
    WebSecurity = CefState.Disabled
};

复制步骤:

  1. 在应用程序中添加上述代码
  2. 进行跨域 GET 请求,注意该请求没有“Origin:”标头,并且响应没有 CORS 标头。
  3. 在控制台中,您将看到以下 CORB 错误:Cross-Origin Read Blocking (CORB) blocked cross-origin response
  4. 我在 CEF 版本73.1.13 上测试了上述内容

【讨论】:

  • 启用网络安全似乎与您想要解决此问题完全相反,但我可以确认它有效。如果禁用 Web 安全,客户端脚本将不会发送“原始”标头,这反过来会阻止服务器返回原始响应标头。因此,浏览器不会提供响应数据。
猜你喜欢
  • 2018-01-24
  • 2014-11-25
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2017-05-04
  • 2023-03-13
  • 2022-08-21
  • 1970-01-01
相关资源
最近更新 更多