2016-04-12 6 views
1

Я предоставляю ETag в заголовке ответа от сервера к браузеру при подаче файла javascript, сгенерированного программно. При последующих запросах на тот же самый файл javascript ETag не отправляется обратно в заголовок запроса у браузера.HTTP-заголовок ETag не отправляется обратно на сервер

Я пробовал это как в Chrome, так и в IE, то же самое можно найти ниже заголовков запроса и ответа с исходного запроса и последующего.

Оригинал заголовка запроса

GET /v11/RUNTIME_SUPPORT.GetGlobalFormResources.aspx HTTP/1.1 
Host: 101.152.80.163 
Connection: keep-alive 
Cache-Control: max-age=0 
Accept: */* 
X-FirePHP-Version: 0.0.6 
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.66 Safari/537.36 
Referer: http://101.152.80.163/v11/Web_Support.Html.aspx 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8,ro;q=0.6,es;q=0.4 
Cookie: StaraspxOpenTabsCount=0; ASP.NET_SessionId=jpdkfccaf0zttoxyvys53ac3; STARaspx_SessionId=1006606D-F415-4AE5-AA4C-847625EB2BAE 
If-None-Match: 0.0.459 

Оригинал заголовка ответа

HTTP/1.1 200 OK 
Cache-Control: public, max-age=604800 
Content-Type: application/javascript; charset=utf-8 
Content-Encoding: gzip 
ETag: 0.0.459,0.0.0,0.00 
Vary: Accept-Encoding 
Server: Microsoft-IIS/8.5 
ItemType: FORMS 
Digest: e0d3a2bdee4c0a48bc4f61bb744755c21c1d6c19 
X-Powered-By: ASP.NET 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1 
X-Content-Type-Options: nosniff 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET,PUT,POST,DELETE,OPTIONS 
Access-Control-Allow-Headers: callfrom, content-type, runtimecalltype 
Access-Control-Allow-Credentials: true 
Date: Tue, 12 Apr 2016 11:46:06 GMT 
Content-Length: 31763 

После заголовка запроса

GET /v11/RUNTIME_SUPPORT.GetGlobalFormResources.aspx HTTP/1.1 
Host: 101.152.80.163 
Connection: keep-alive 
Cache-Control: max-age=0 
Accept: */* 
X-FirePHP-Version: 0.0.6 
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.66 Safari/537.36 
Referer: http://101.152.80.163/v11/Web_Support.Html.aspx 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8,ro;q=0.6,es;q=0.4 
Cookie: StaraspxOpenTabsCount=0; ASP.NET_SessionId=jpdkfccaf0zttoxyvys53ac3; STARaspx_SessionId=1006606D-F415-4AE5-AA4C-847625EB2BAE 
If-None-Match: 0.0.459 

После заголовка ответа

HTTP/1.1 200 OK 
Cache-Control: public, max-age=604800 
Content-Type: application/javascript; charset=utf-8 
Content-Encoding: gzip 
ETag: 0.0.459,0.0.0,0.00 
Vary: Accept-Encoding 
Server: Microsoft-IIS/8.5 
ItemType: FORMS 
Digest: e0d3a2bdee4c0a48bc4f61bb744755c21c1d6c19 
X-Powered-By: ASP.NET 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1 
X-Content-Type-Options: nosniff 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET,PUT,POST,DELETE,OPTIONS 
Access-Control-Allow-Headers: callfrom, content-type, runtimecalltype 
Access-Control-Allow-Credentials: true 
Date: Tue, 12 Apr 2016 11:46:48 GMT 
Content-Length: 31763 

ответ

1

Я определил корневые причины ETags не работает в моем сценарии:

  • я посмотрел на If-None-Match запроса заголовок поля, а не ожидать, что поле ETag будет предоставлено серверу (подробнее здесь Header Field Definitions)
  • Я должен был бы неиспользуемые запятые в моем значении поля заголовка ETag, только подстрока перед первой запятой отправляется обратно в поле заголовка запроса If-None-Match. В моем случае значение ETag в заголовке respose было 0.0.459,0.0.0,0.00, а последующий запрос имел 0.0.459 в поле заголовка If-None-Match.

заголовок ответа от сервера в настоящее время: HTTP/1.1 304 Not Modified :)