gpt4 book ai didi

google-chrome - 由于安全问题,sendBeacon API 暂时无法工作,有什么解决方法吗?

转载 作者:行者123 更新时间:2023-12-04 03:31:41 25 4
gpt4 key购买 nike

我有以下代码使用 sendBeacon 方法发送异步 HTTP 请求,

var data = {
name: 'test',
uniqueId: Math.random()
};
var blob = new Blob([JSON.stringify(data)], {type : 'application/json'});
navigator.sendBeacon('http://example.in/data/post', blob);

这段代码已经运行了很长时间。目前,由于 chrome 中的安全问题 https://bugs.chromium.org/p/chromium/issues/detail?id=490015 ,我们看到错误“ 无法在‘导航器’上执行‘sendBeacon’:sendBeacon() 的类型不是 CORS 安全列表 MIME 类型的 Blob 在实验中是不允许的。有关详细信息,请参阅 http://crbug.com/490015

是否有任何解决方法可以通过使用相同的 sendBeacon API 修改请求 header 来发送 JSON 数据,直到问题得到解决?对于依赖此 API 的站点继续使用直到修复完成将很有用。关于使用 XHR 发布数据的建议没有用。

最佳答案

现在,sendBeacon 中 Content-Type header 的唯一允许值是:

  • 应用程序/x-www-form-urlencoded
  • 多部分/表单数据
  • 文字/普通

  • 我在我们的项目中遇到了类似的问题,我最终将数据作为“文本/纯文本”发送; charset=UTF-8' 并在服务器端读取 json 内容的流。

    客户:
    const blob = new Blob([JSON.stringify(myData)], { type: 'text/plain; charset=UTF-8' });
    navigator.sendBeacon(appData.ReleaseSessionUrl, blob);

    服务器:
    using (var reader = new StreamReader(this.Request.InputStream))
    {
    var jsonData = reader.ReadToEnd();
    var sessionData = JsonConvert.DeserializeObject<MyDataType>(jsonData);
    }

    不确定这是否对您有帮助。

    https://github.com/GoogleCloudPlatform/stackdriver-errors-js/issues/10

    关于google-chrome - 由于安全问题,sendBeacon API 暂时无法工作,有什么解决方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45274021/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com