关于可以在 HTTP“连接”标头中作为连接令牌发送的内容是否有任何规则?例如,非字母数字字符(除了-
)是否喜欢{
或/
允许?
此外,标头中是否有有效连接令牌列表,还是开放式的?例如,是否Keep-Alive
, Keep-alive
, keep-alive
, keepalive
, 甚至keel-alive
被认为是有效的——从某种意义上说,只要接收端知道如何处理它们,它就被允许?还是所有接收端都只允许Keep-Alive
和丢弃/忽略其余部分?
所以我正在扫描我的网站以查找漏洞,我发现了这个,但我不知道如何在谷歌云应用引擎中修复它:
我真的不知道应该在哪里包含标头指令,但我想它在 app.yaml 中,但我不知道使用什么“标签”来设置标头,或者它是否是 CloudFlare 侧补丁。
这是如何修复的 URL:
我试图在互联网上搜索答案,但找不到任何解决此问题的人。
我正在使用带有 python 3.7 的烧瓶。
我们需要发送超过 16181 个字符的获取请求。此时我们最多可以发送:15,861 之后我们得到:
HTTP 错误 400。请求标头的大小太长。
这是在注册表中配置为 DWORD 值的内容:
MaxFieldLength: 65534
MaxRequestBytes: 16777216
UrlSegmentMaxLength: 32766
在 IIS 中:
maximum allowed content length 2147483647
maximum url length 2147483647
maximum url length 2147483647
网络配置:
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" maxUrl="2147483647" maxQueryString="2147483647" />
</requestFiltering>
...
<bindings>
<netTcpBinding>
<binding name="largeTcpBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="2147483647" maxReceivedMessageSize="2147483647" portSharingEnabled="false" transactionFlow="false" listenBacklog="2147483647">
<security mode="None">
<message clientCredentialType="None" />
<transport protectionLevel="None" clientCredentialType="None" />
</security>
<reliableSession enabled="false" />
</binding>
</netTcpBinding>
<webHttpBinding>
<binding name="largeRestFullBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Streamed">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
<binding name="largeRestFullBindingSecoundEndPoint" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Streamed">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</webHttpBinding>
<wsHttpBinding>
<binding name="largeSoapBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</wsHttpBinding>
<mexHttpBinding>
<binding name="mexHttpBinding" />
</mexHttpBinding>
</bindings>
...
<system.web>
<compilation debug="true" targetFramework="4.6" />
<httpRuntime maxQueryStringLength="999999" maxUrlLength="999999" relaxedUrlToFileSystemMapping="true" targetFramework="4.6" />
<machineKey decryptionKey="" validationKey="" />
</system.web>
在 HTTPERR 我得到:
2020-02-17 17:31:01 172.16.144.50 59371 172.16.144.50 80 HTTP/1.1 GET LONGURL- 400 - RequestLength -
日志削减了部分 url。
我错过了什么?
我刚刚从源代码安装了 Opencv 4.1.1,带有 python 3 绑定。我的 Python 安装似乎工作正常,因为如果我运行:
import cv2
cv2.__version__
我得到“4.1.1”
但是,我还想使用一些 C++ 代码。我之前安装了 3.4.3,是从源代码构建的,不幸的是我在卸载之前删除了构建文件夹。所以,当我运行这个 C++ 代码时,它只找到版本号 Macros 并打印它们:
#include <opencv2/core.hpp>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
//print opencv version
printf("opencv version: %d.%d.%d\n",CV_VERSION_MAJOR,CV_VERSION_MINOR,CV_VERSION_REVISION);
return 0;
}
当我用这个命令编译时:
g++ -o get_version get_version.cpp -I/usr/local/include/opencv4/opencv2 -Lusr/local/lib -lopencv_core
它返回 3.4.3。
所以,我想解决这个问题,所以我找到了旧的头文件,并将它们全部删除(它们位于 /usr/local/include/opencv2)。但是现在当我尝试编译我的代码时,它给了我错误:
get_version.cpp:1:10: fatal error: opencv2/core.hpp: No such file or directory
#include <opencv2/core.hpp>
^~~~~~~~~~~~~~~~~~
compilation terminated.
但是,如果我导航到 /usr/local/include/opencv4/opencv2/,我可以看到文件 core.hpp,所以我不知道为什么编译器找不到它。
那么,为什么我的标头链接不正确?我该如何解决这个问题。我认为命令 -I/usr/local/include/opencv4/opencv2 会允许它找到它。我也已经跑了
sudo ldconfig
虽然我不确定该命令到底做了什么。此外,对于那些不知道的人,opencv 4 不会自动包含 pkg-config 文件,因此这不是解决此问题的方法。