我在脚本源中有许多 sha256 哈希值。chrome 在第一个时给了我这个错误;
The Content-Security-Policy directive name ''sha256-OIf-redacted-bJEXc='' contains one or more invalid characters. Only ASCII alphanumeric characters or dashes '-' are allowed in directive names.
编辑部分仅包含a-zA-Z0-9\-
如果我删除引号(唯一不兼容的字符),它根本无法识别该部分。
我相信错误消息具有误导性,并且哈希值还存在其他问题。
这里真正的问题是什么?为什么 chrome 不接受这些指令?
标题看起来像这样:
default-src 'none'; script-src 'self' https://consentcdn.cookiebot.com/ https://consent.cookiebot.com/ ; 'sha256-e-redacted-A=' ...more stuff...
我找到了一个很好的控制响应缓冲的答案。但我需要禁用请求缓冲。
我发现后台有一个缓冲区,里面填满了请求数据。断点请求方法不会暂停这个过程,所以它显然是由后台线程完成的。我遵循了一些说明(例如关闭 FormValueProviderFactory),但它们并不能阻止这种行为。
我已经在这里实现了代码。
该示例创建了一个名为 DisableFormValueModelBindingAttribute 的过滤器属性,文档声称该属性可防止将文件加载到内存中,但它没有这种效果。在请求开始流式传输后过滤器被命中。
但是我发现整个请求仍然缓冲到内存中。它达到请求内存限制并开始存储在磁盘中,但这会导致服务器磁盘空间不足。由于服务托管在 docker 中,我只有几百 MB 可以使用。我真正需要的是将多部分请求缓冲到我可以读取它的程度。
我正在使用 .net core 2.1 和 AspNetCore 2.1.1
名称不正确 - 请求总是被缓冲,这实际上是启用请求回滚。
这是过时的。它没有实现细节。过时的标签说
[Obsolete("See IHttpRequestBodyFeature or IHttpResponseBodyFeature DisableBuffering", error: true)]
Run Code Online (Sandbox Code Playgroud)
但 IHttpRequestBodyFeature不存在。
令人失望,因为当这个答案出现时我很兴奋!
经过一些实验,我想出了一些事情。我将请求从控制器移到中间件中。
[Obsolete("See IHttpRequestBodyFeature or IHttpResponseBodyFeature DisableBuffering", error: true)]
Run Code Online (Sandbox Code Playgroud)
但是我发现有一个后台线程填充了请求缓冲区。我在中间件内设置了一个断点,但我仍然可以看到后台发生的上传。请求缓冲区仍在填充。
答案可能与可以对 HttpRequestFeature 进行的可能配置有关。
在 UseKestrel 的回调中,您可以配置限制并且有一个限制
称为“MaxRequestBufferSize”
但默认为 1MB。很明显,它不对缓冲到磁盘的完整请求负责。
我还发现了一个关于缓冲可配置的 github 问题,主要是抱怨它不是。这并没有让我充满信心。
将 kentico 升级到 10 后,并修复代码中的错误。我启动 kentico 网站,并看到离线页面:
谁能知道为什么会发生这种情况?