Articles of http

HTTP(S)URL的主机名部分是否真的不区分大小写?

使用http(s)://CompanyName.com/xyz作为URL(例如出于品牌的目的)而不改变服务端configuration是否安全? 我知道DNS是不区分大小写的,但是还是会有副作用? 我正在考虑如链的各个部分未能匹配CompanyName.com〜companyname.com: 某些networking后端可能无法匹配 某些负载平衡器/代理/caching/应用程序层防火墙可能无法匹配 有些客户可能错误地应用同源策略 某些客户端可能无法在证书检查中匹配 虽然DNS通常不区分大小写,但是IDN可以更改图片吗? 任何人在URL的主机名部分经历过这些或其他问题的资本? [编辑] @迈克尔汉普顿指出,根据HTTP标准,主机名是不区分大小写的,但是在这方面有些软件是不兼容的。 我尝试了解非兼容软件是多么普遍,特别是客户端。 我假设所有最近的主stream浏览器都很好,但是关于移动应用程序呢? (我应该更好地把它分解成一个单独的SF问题?)[/编辑]

Windows上有什么工具可以模拟/模拟networking问题?

我正在寻找Windows的工具,可以作为服务器前面的反向代理来引入各种networking问题,如抖动,延迟或丢包。 我的首选是在Windows上工作的软件解决scheme。 Httpd mod_proxy似乎不支持这样的configuration,并且在这个类别中使用Googlesearchfunction是徒劳的。

如何使用Just Squid和C-ICAP来启用URL过滤

在我发布这个问题之前,我在网上阅读了几个设置指南,鱿鱼docs,c-icap docus和ICAP RFC(3507)。 不幸的是,SQUID和C-ICAP的文档在涉及到URL过滤方面并没有提供太多的例子,只是涉及到使用ClamAv的简单设置。 所以,我想弄清楚如何使用Squid和C-ICAP服务器设置简单的URL过滤。 具体来说,我开始尝试使用SquidGuard数据库(而不是Squidguard程序)作为黑名单的来源。 我有Squid设置和运行(代理)就好了,我有C-ICAP设置和运行(响应选项请求)就好了。 不过,我不知道为什么URL过滤没有运行,因为我已经尽可能地遵循了这些示例。 对于ICAP,我的squid.conf设置如下: #Icap Options icap_enable on icap_service svcBlocker reqmod_precache icap://127.0.0.1:1344/srv_url_check bypass=off 在c-icap.conf文件的底部,我已经包含了我想要使用的icap服务: # End module: ldap_module #URL Check Services Include srv_url_check.conf 我已经按照c-icap文档设置了srv_url_check.conf文件: # Default: #None set #Example: url_check.LoadSquidGuardDB audio-video /home/dranfu/Downloads/blacklists/audio-video/ 当我向C-ICAP发送选项请求时,它工作正常: ICAP server:localhost, ip:127.0.0.1, port:1344 OPTIONS: Allow 204: Yes Preview: 1024 Keep alive: Yes ICAP HEADERS: ICAP/1.0 200 […]

启用/禁用服务器端的恢复下载function

一些服务器如何不允许恢复下载? 哪里 – 在服务器configuration方面 – 你必须configuration禁用/启用此function? 这是一个HTTPconfiguration? 或者它与你的TCP连接有关? 或两者? 当然这个问题并不是针对http的。 FTP和HTTPS协议必须具有相同的configuration,对吧? 有没有解决这个问题的方法? 当然,我只是寻找一个平台独立的答案来解决这个问题。 你可以参考你在特定平台(Windows-IIS,Linux-apache或其他)上的经验来回答。 PS。 1 – 我不问关于托pipe的文件共享服务(如急救等),其商业模式取决于此function。 据我所知,他们每次要求一个文件的时候都会改变他们的URL。 但例如http://ocw.yale.edu 。 在与服务器断开连接后,它不允许恢复下载。 另一个例子是泰德video。 一旦你的连接因为任何原因而丢失,你必须重新开始。 2-我不问你是否可以恢复客户端的下载。 为了这个问题,假设在客户端,我有工具来恢复我的下载。

为什么Android不cachingApple Touch图标?

我不确定这是否适用于所有的Android手机,但似乎很多Android浏览器都不会cachingApple Touch图标,并将其重新加载到每个页面视图上。 我在我的HTML页面的<head>中有以下内容: <link rel="apple-touch-icon" sizes="152×152" href="/path/to/icon.jpg" /> 在我的服务器日志中,我看到很多来自Android客户端的访问者在每个页面视图上都要求图标文件: [02/Jan/2014:16:21:43 +0100] "GET /path/to/icon.jpg HTTP/1.1" 200 13017 "-" "Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" [02/Jan/2014:16:22:04 +0100] "GET /path/to/icon.jpg HTTP/1.1" 200 13017 "-" "Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" […]

Nginx不尊重必须重新validation

我想使用nginx作为caching逆向代理。 我也有一个特殊的要求,我认为可以用nginx来完成。 我使用Amazon S3作为原始服务器,并使用已签名的URL来保护内容。 因此,每个用户都会获得一段时间后过期的唯一url。 即使每个用户都有一个唯一的URL,为了让nginxcaching内容,我将caching键定义为仅包含请求文件名(参见下面的configuration)。 那到目前为止工作很好。 问题是,如果请求的URL将是无效的,因为查询string中的签名太旧或无效,服务器无论如何传递文件。 因为它被caching。 我确认了最初的请求必须包含有效的签名。 如果用户请求中的signture无效,nginx无法从服务器上获取(当然)。 现在我想要的是在每个请求上重新查找文件。 此重新查找应该与用户指定的URL一起进行。 如果请求成功,则应该传递caching的文件。 这正是使用Cache-control: must-revalidate应该完成的行为Cache-control: must-revalidate 所以我在我的原始服务器(amazon s3)上configuration了这个头文件。 然后我意识到,nginx并没有相应的行为。 所以文件直接从caching中传递而不需要与原始服务器进行validation。 因此,不好的签名不被识别,用户可以下载。 问题1:在这种情况下,有没有办法让nginx获得必须重新validation的头文件? 这是我的configuration文件 proxy_cache_path /home/sbgag/cache keys_zone=MYZONE:10m inactive=365d max_size=10g; server { listen 80; server_name test.mydomain.com; location / { proxy_pass http://s3-eu-west-1.amazonaws.com; proxy_set_header Host s3-eu-west-1.amazonaws.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_key "$request_filename"; more_set_headers "X-My-Proxy-Cache-Key $request_filename"; more_set_headers […]

Nginx不会减less最大年龄

我正在尝试将Nginx设置为运行在Unicorn上的Rails应用程序的反向代理。 我的应用程序有一些公共页面,我想caching60分钟的持续时间,所以我设置了最大年龄标题。 此外,我在Nginx的服务器块中添加了proxy_cache选项。 proxy_cache default; 并定义了这个caching proxy_cache_path /var/www/nginx_cache keys_zone=default:10m max_size=500m; 我已经build立了我的应用程序来添加这个头到我的可caching的响应 Cache-Control: max-age=3600, public 当客户第一次碰到页面时,页面被渲染并返回响应。 但是,在随后的请求中,nginx不会减lessmax-age计数器。 因此,访问者可能会在到期前一分钟访问我的页面,这意味着他正在看到59分钟的内容。 但是,将这个副本保存在他的浏览器中60分钟,然后才能得到一个新的副本。 我可以通过Nginx来减去所经过的时间,所以如果访问者点击一个已经在Nginxcaching中25分钟的页面,最大年龄将是35分钟(2100秒)?

我如何configurationAzure上的IIS来从Node.js应用程序stream式传输数据?

我有一个使用Transfer-Encoding: Chunked的Node.js应用程序Transfer-Encoding: Chunked通过HTTP连续传输数据,直到客户端断开连接。 运行Node的本地实例时,它可以正常工作,但在部署到Azure App Service(通过iisnode运行Node应用程序)时,客户端连接将不会收到数据。 logging表明Node应用程序正在处理请求并正确传输数据,但由于某些原因数据未到达客户端。 以下是我从节点stream式传输数据的简单示例: var server = http.createServer(); server.on('request', function(request, response) { var interval = setInterval(function() { response.write("some data\r\n"); }, 1000); request.on('close', function() { clearInterval(interval); }); }); server.listen(config.port); 在我的iisnode.ymlconfiguration文件中,我设置了flushResponse: true来防止iisnode缓冲响应块。 我的猜测是,IIS正在尝试缓冲整个响应之前发送,但我不知道如何禁用此行为。

使用ETag和LastModified作为CDNcachingvalidation器有什么好处和缺点?

我正在阅读关于Azure CDN的这篇文章。 我可以控制与caching: 一个ETag 上一次更改 默认启发式 前两种select的优点和缺点是什么? 有关系吗? 一个可能工作的地方可能是: 跨域调用 私人浏览 的IFrame 阿贾克斯 …这些数据是通过这些方法可见的,而不是其他的。

通过Haproxy中的连接进行多less个HTTP事务

我想知道通过Haproxy与客户端(前端)的特定连接发生多lesshttp事务。 如果我可以将连接(会话)ID与前端的请求相关联,那么我将能够使用此ID统计日志行的数量,计算出速率。 Haproxy 1.6有可能吗? 编辑 文档状态: 目前,日志不会显示请求是否来自同一个会话。 在日志中报告的接受date对应于前一个请求的结束,并且请求时间对应于等待新请求所花费的时间。 如果没有设置,保持活动请求的时间仍然受到“timeout http-keep-alive”或者“timeout http-request”定义的超时限制。 是否有可能检索所需的数据与Lua脚本?