http header cache-control (request和response区别)

ASP.NET HTTP缓存底层原理与实战避坑指南 HTTP缓存是Web性能的核心机制,其本质并非单向指令,而是基于RFC 7234规范的协商式语义系统,依赖请求方法、状态码、响应头组合、ETag/Last-Modified标识及Vary头等多要素协同生效。在ASP.NET生态中,IIS、Kestrel、中间件与业务代码构成七层控制链,任一环节(如IIS默认注入Cache-Control: private、Vary头缺失、ETag生成失真)都可导致缓存失效。本文聚焦HTTP缓存可缓存性(cacheability)判定逻辑与ASP.NET各版本(Web For 阅读详情

摘要:(1)网络服务会根据 request的header中的 cache-control策略设置response的cache-control策略

1 response cache-control 和 request cache-control关系

CacheIgnoreCacheControl Directive

Description: Ignore request to not serve cached content to client
Syntax: CacheIgnoreCacheControl On|Off
Default: CacheIgnoreCacheControl Off
Context: server config, virtual host
Status: Extension
Module: mod_cache

Ordinarily, requests containing a Cache-Control: no-cache or Pragma: no-cache header value will not be served from the cache. The CacheIgnoreCacheControldirective allows this behavior to be overridden. CacheIgnoreCacheControl On tells the server to attempt to serve the resource from the cache even if the request contains no-cache header values. Resources requiring authorization will never be cached.

CacheIgnoreCacheControl On

Warning:

This directive will allow serving from the cache even if the client has requested that the document not be served from the cache. This might result in stale content being served.

转自:http://httpd.apache.org/docs/2.4/mod/mod_cache.html#cacheignorecachecontrol

2 不同设置的效果

 网页的缓存控制是由HTTP头中的“Cache-control”来实现的,常见值有private、no-cache、max-age、must-revalidate等,默认为private。这几种值的作用是根据重新查看某一页面时不同的方式来区分的:

(1)、打开新窗口

值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。

而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:

Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)

(2)、在地址栏回车

值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。

值为no-cache,那么每次都会访问。

值为max-age,则在过期之前不会重复访问。

(3)、按后退按扭

值为private、must-revalidate、max-age,则不会重访问,

值为no-cache,则每次都重复访问

(4)、按刷新按扭

无论为何值,都会重复访问

Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。

  另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT

比如:禁止页面在IE中缓存

http响应消息头部设置:

代码如下:

?
1
2
3
CacheControl = no-cache
Pragma=no-cache
Expires = -1

  Expires是个好东东,如果服务器上的网页经常变化,就把它设置为-1,表示立即过期。如果一个网页每天凌晨1点更新,可以把Expires设置为第二天的凌晨1点。

  当HTTP1.1服务器指定 CacheControl = no-cache时,浏览器就不会缓存该网页。

  旧式 HTTP 1.0 服务器不能使用 Cache-Control 标题。

  所以为了向后兼容 HTTP 1.0 服务器,IE使用Pragma:no-cache 标题对 HTTP 提供特殊支持。

  如果客户端通过安全连接 (https://)/与服务器通讯,且服务器在响应中返回 Pragma:no-cache 标题,则 Internet Explorer不会缓存此响应。注意:Pragma:no-cache 仅当在安全连接中使用时才防止缓存,如果在非安全页中使用,处理方式与 Expires:-1相同,该页将被缓存,但被标记为立即过期。

header常用指令

header分为三部分:

第一部分为HTTP协议的版本(HTTP-Version);

第二部分为状态代码(Status);

第三部分为原因短语(Reason-Phrase)。

代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// fix 404 pages:   用这个header指令来解决URL重写产生的404 header
header( 'HTTP/1.1 200 OK' );  
// set 404 header:   页面没找到
header( 'HTTP/1.1 404 Not Found' );  
// 页面被永久删除,可以告诉搜索引擎更新它们的urls
// set Moved Permanently header (good for redrictions)  
// use with location header  
header( 'HTTP/1.1 301 Moved Permanently' );  
// 访问受限
header( 'HTTP/1.1 403 Forbidden' );
// 服务器错误
header( 'HTTP/1.1 500 Internal Server Error' );
// 重定向到一个新的位置
// redirect to a new location:  
header('Location: http: //www.jbxue.com);  
延迟一段时间后重定向
// redrict with delay:  
header( 'Refresh: 10; url=http://www.sina.com.cn' );  
print  'You will be redirected in 10 seconds' ;  
// 覆盖 X-Powered-By value
// override X-Powered-By: PHP:  
header( 'X-Powered-By: PHP/4.4.0' );  
header( 'X-Powered-By: Brain/0.6b' );  
// 内容语言 (en = English)
// content language (en = English)  
header( 'Content-language: en' );  
//最后修改时间 (在缓存的时候可以用到)
// last modified (good for caching)  
$time  = time() - 60;  // or filemtime($fn), etc  
header( 'Last-Modified: ' . gmdate ( 'D, d M Y H:i:s' ,  $time ). ' GMT' );  
// 告诉浏览器要获取的内容还没有更新
// header for telling the browser that the content  
// did not get changed  
header( 'HTTP/1.1 304 Not Modified' );  
// 设置内容的长度 (缓存的时候可以用到):
// set content length (good for caching):  
header( 'Content-Length: 1234' );  
// 用来下载文件:
// Headers for an download:  
header( 'Content-Type: application/octet-stream' );  
header( 'Content-Disposition: attachment; filename="example.zip"' );  
header( 'Content-Transfer-Encoding: binary' );  
// 禁止缓存当前文档:
// load the file to send:readfile('example.zip');  
// Disable caching of the current document:  
header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );  
header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );    
// 设置内容类型:
// Date in the pastheader('Pragma: no-cache');  
// set content type:  
header( 'Content-Type: text/html; charset=iso-8859-1' );  
header( 'Content-Type: text/html; charset=utf-8' );  
header( 'Content-Type: text/plain' );  
// plain text file  
header( 'Content-Type: image/jpeg' );    
// JPG picture  
header( 'Content-Type: application/zip' );    
// ZIP file  
header( 'Content-Type: application/pdf' );    
// PDF file  
header( 'Content-Type: audio/mpeg' );    
// Audio MPEG (MP3,...) file  
header( 'Content-Type: application/x-shockwave-flash' );    
// 显示登录对话框,可以用来进行HTTP认证
// Flash animation// show sign in box  
header( 'HTTP/1.1 401 Unauthorized' );  
header( 'WWW-Authenticate: Basic realm="Top Secret"' );  
print  'Text that will be displayed if the user hits cancel or ' ;  
print  'enters wrong login data' ;
?>

  我们经常遇到这样的情况,当用户提交表单时出现错误,回退到上一页时,有一些信息丢失了,也是很头疼的事情,当然我们可以用AJAX对用户数据随时进行验证,第一种情况要支持页面回跳可以试试下面的方法:

1.使用session_cache_limiter方法: session_cache_limiter('private,must-revalidate');但是要值得注意的是 session_cache_limiter()方法要写在session_start()方法之前才有用;

2.用header来设置控制缓存的方法: header('Cache-control:private,must-revalidate');



吃透工业通信:C#工控机实现Modbus、OPC UA、Profinet、EtherCAT协议全适配 本文介绍了基于C#的工业通信协议全适配方案,采用分层架构设计实现Modbus、OPC UA、Profinet和EtherCAT四种主流协议的统一管理。核心包括:1)三层架构(应用层、抽象层、协议层)降低耦合;2)定义统一通信接口IIndustrialCommunication;3)工厂模式创建不同协议实例;4)以Modbus TCP为例展示具体实现。该方案经过实际项目验证,可简化多协议设备管理,提升工业自动化系统的开发效率。 阅读详情

相关推荐

【多模态大模型】GLIP:零样本目标检测新范式与视觉语言理解

本文深入解析了多模态大模型GLIP在零样本目标检测和视觉语言理解领域的创新应用。GLIP通过统一目标检测与自然语言理解任务,实现了零样本学习能力,能够精准定位复杂文本描述对应的图像区域。文章详细介绍了GLIP的核心技术、数据策略及实战表现,并对比了与其他多模态模型的差异,为AI视觉理解提供了新范式。

weixin_29186249的博客 263

header中Cache-control的使用

  网页的缓存控制是由HTTP头中的“Cache-control”来实现的,常见值有private、no-cache、max-age、must-revalidate等,默认为private。这几种值的作用是根据重新查看某一页面时不同的方式来区分的: (1)、打开新窗口 值为private、...

chiyuanyun3661的博客 542

WPS Office 2019 For Linux二次开发全流程:从源码下载到Demo运行

本文详细介绍了在Linux环境下进行WPS Office 2019 C++二次开发的全流程,涵盖从开发环境准备、源码获取、核心依赖(Qt与WPS)安装配置,到最终编译运行官方Demo的完整步骤。文章重点解析了环境搭建中的常见问题与解决方案,旨在帮助开发者快速上手WPS二次开发。

weixin_29001423的博客 388

细胞膜电学特性的分数阶微积分建模

分数阶微积分在细胞膜电学特性建模中的应用主要体现在对细胞膜的电容行为和神经元放电活动的更精确描述上。

冰河世纪20的博客 619

Simscape Multiboby学习笔记1——跟着官网学Multibody

文章目录一. 引言二. Simscape Multibody自学之路三. 本教程的目录 一. 引言 最近在倒腾Matlab的动力学仿真,起因是看到有人推荐Matlab的multbody模块,一经了解之下简直惊为天人。作为一名Matlab的小粉,看到这么好用的模块简直不要太开心,之前用simulink搭飞行器的仿真模型,虽然能够仿真看到六自由度位移,毕竟不能可视化,还是很不够直观,而且simulink仿真(以及更费力的脚本文件仿真)需要精确建模,模型不精确计算也是天差地别。而Multibody在具备其他动力学

qq_30267617的博客 8240

HTTP消息头中的“Cache-control”介绍

1. response.setHeader("Cache-Control","no-cache"); This is used to prevent the browser from caching your dynamiccontent generated by a JSP or Servlet. You set this attribute in the HTTP header o

iBenxiaohai123的博客 1305

人群仿真软件:Pathfinder_(14).与其他软件的集成与互操作

在人群仿真软件的二次开发中,与其他软件的集成和互操作是非常重要的。通过数据导入导出、接口调用和脚本编写,可以显著提升仿真的准确性和实用性。Pathfinder提供了多种数据格式的支持和丰富的API,使得与其他软件的集成变得简单高效。无论是建筑模型的导入、仿真结果的导出,还是实时数据的交换,Pathfinder都能满足用户的需求。

kkchenjj的博客 1015

http协议(三)缓存头Cache-Control和缓存验证ETag、Last-Modified

Cache-Control 通用消息头字段,被用于在http请求和响应中,通过指定指令来实现缓存机制。缓存指令是单向的,这意味着在请求中设置的指令,不一定被包含在响应中。 Cache-Control指令包含了多个指令,分别具有不同的用途,比如设置缓存权限和缓存时间。 指令格式具有以下有效规则: 不区分大小写,但建议使用小写。 多个指令以逗号分隔。 具有可选参数,可以用令牌或者带引号的字符串语法。 1. 指令 1.1 可缓存性 public 表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等

Niall_Tonshall的博客 6586

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

算法大师! 720

最近腾讯手机管家a.gray.Bulimia.a病毒提示决解方案

仅供参考(个人问题已解决 未申诉) 用户反馈app提示病毒图如下 然后下载生产包去https://www.virustotal.com/gui/这个网站去检测 果真提示病毒 重新加版本 打了个包 未加固 检测没问有问题 同一个包用360加固之后再检测有问题 ,但是没有a.gray.Bulimia.a报病毒 然后再用应用宝加固检测也没问题,个人以前都是用360加固的,很尴尬啊 最重要的一点的是,更新一个版本号,其余的啥都没改,更新替换手机的原来版本app,腾讯手机.

村头那抠脚大叔的专栏 3万+

接口测试五(http headers)

转自:http://www.360doc.com/content/16/0128/15/30056680_531241446.shtml# fiddler详解http headers 一、http header分为request headers和response headers,如下图: 二、用心的小伙伴会发现,用手机打开的页面和电脑打开的页面不一样,那么这是通过什么原理实现的呢? 1.手机打开...

weixin_43639443的博客 868

SAC-IA算法点云粗配准

SAC-IA(Sample Consensus Initial Alignment)是PCL库中的一种初始点云配准算法,它使用特征匹配和RANSAC(随机抽样一致性)框架来估计两个点云之间的初始刚性变换。其目标是通过特征描述符找到一组可靠的匹配点对,并使用这些点对估计初始对齐的变换矩阵。

twnkie的博客 1445

接口测试之Fiddler+HTTP协议headers

一、http header可以分为request headers和response headers,如下图所示 header 二、什么是User-Agent及User-Agent的作用 1.什么是User Agent User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务...

weixin_34248258的博客 327

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HTTP协议详解

HTTP协议详解 阅读目录 什么是HTTP协议Web服务器,浏览器,代理服务器URL详解HTTP协议是无状态的打开一个网页需要浏览器发送很多次RequestHTTP消息的结构Get和Post方法的区别状态码HTTP Request headerHTTP Response headerHTTP协议是无状态的和Connection: keep-alive的区别 什么是HTTP协议

skysky01的专栏 621

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

http header详解

http header详解一、request header二、response header 一、request header 1.Accept 作用: 浏览器端可以接受的媒体类型, 例如: Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html 也就是我们常说的html文档,如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable) 通配符 * 代表任意类型 例如 Accept: / 代表浏览器可以处理所有类型,(一般

faramita_of_mine的博客 8129

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HTTP协议request头和response头

Request Headers 分析 HTTP 协议的时候可以通过浏览器的开发者工具进行查看。 下图是访问的URL:https://www.google.com.hk/ Accept:text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, image/apng, */*; q=0.8 作用:向服务...

抛弃幻想,准备斗争 2032

HTTP协议学习# (一)request 和response 解析

#HTTP协议学习# (一)request 和response 解析 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基

胡杰的专栏 8726

HTTP Request/Response header

http://www.cnblogs.com/lexus/archive/2012/02/21/2360944.html URL详解  URL(Uniform Resource Locator) 地址用于描述一个网络上的资源,  基本格式如下 schema://host[:port#]/path/.../[?query-string][#anchor]

荒岛码农 3734

HTTP Request header

HTTP Request header 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用F...

dcj3sjt126com的专栏 346

Http协议之Requst和Response

TCP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。 TCP   HTTP   UDP三者的关系: TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOT

搁浅记忆的博客 1824

转 #HTTP协议学习# (一)request 和response 解析

http://www.cnblogs.com/bukudekong/p/3834020.html #HTTP协议学习# (一)request 和response 解析 注:本文转自:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html , 粉字[]内内容为个人笔记 当今web程序的开发技术真是百家争...

weixin_34221332的博客 150

HTTP 协议详解

本文介绍了HTTP协议的基础知识,包括其无连接、无状态特性以及URI/URL编码规则。重点分析了HTTP请求/响应格式,详细讲解了GET/POST方法的应用场景和区别,并列举了常见的HTTP状态码和Header字段。文章通过代码示例展示了HTTP服务器的实现原理,包括静态资源处理、动态交互、Cookie/Session管理等核心功能。最后梳理了HTTP各版本的技术演进,从HTTP/0.9到HTTP/3.0的性能优化路径。内容涵盖HTTP协议从基础到实践的完整知识体系,适合作为网络开发的参考指南。

Small_entreprene的博客 7978
上一篇: spark第二篇--基本原理
下一篇: md5
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值