curl: If-Modified-Since Command Linux / Unix Example

HTTP protocol allows a client to specify a time condition for the document it requests. It is If-Modified-Since or If-Unmodified-Since. How do I use curl Unix/Linux command line option to test a server with If-Modified-Since condition and validate Last-Modified settings?

Tutorial details
Difficulty level Easy
Root privileges No
Requirements curl
Est. reading time N/A
You can use curl command to see if a copy (http resources such as text/html or image/png) that they hold is still valid. However, this will only work if response has a Last-Modified header. You can send a Last-Modified header using web server or your web application.

Step #1: Find out if response has a Last-Modified header

Type the following curl command:

curl --silent --head http://server1.cyberciti.biz/foo/bar/image.png
curl --silent --head http://server1.cyberciti.biz/foo/help.html

OR

curl -I http://server1.cyberciti.biz/foo/bar/image.png
curl -I  http://server1.cyberciti.biz/foo/help.html

In this example, note down the Last-Modified headers in the response to this HEAD request:
$ curl -I http://www.cyberciti.biz/faq/
Sample outputs:

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 11 Dec 2012 10:10:24 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Whom: l2-com-cyber
Last-Modified: Tue, 11 Dec 2012 10:10:23 GMT
Cache-Control: max-age=299, must-revalidate
Vary: Cookie
X-Pingback: http://www.cyberciti.biz/faq/xmlrpc.php
X-Galaxy: Andromeda-1
Vary: Accept-Encoding

The syntax is as follows to send If-Modified-Since header using the curl command line:
$ curl -I --header 'If-Modified-Since: DATE-FORMAT-HERE' http://server1.cyberciti.biz/foo/bar/image.png
$ curl -I --header 'If-Modified-Since: Tue, 11 Dec 2012 10:10:24 GMT' http://www.cyberciti.biz/faq/

Sample outputs:

HTTP/1.1 304 Not Modified
Server: nginx
Date: Tue, 11 Dec 2012 10:12:11 GMT
Connection: keep-alive
X-Whom: l2-com-cyber
Vary: Cookie
Last-Modified: Tue, 11 Dec 2012 10:10:23 GMT
X-Galaxy: Andromeda-1
Vary: Accept-Encoding

The resource sends a 304 Not Modified response, indicating that it supports Last-Modified validation.


🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 2 comments so far... add one


CategoryList of Unix and Linux commands
Disk space analyzersdf duf ncdu pydf
File Managementcat cp mkdir tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Modern utilitiesbat exa
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg glances gtop jobs killall kill pidof pstree pwdx time vtop
Searchingag grep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
2 comments… add one
  • shiv Jan 16, 2014 @ 16:41

    How can you substitute the date part with a shell variable .. like this –

    curl –silent -I –header ‘If-Modified-Since: “$mod”‘

    Thanks

  • Ole Feb 16, 2016 @ 13:37

    Isn’t this handled by --remote-time and --time-conf FILE ?

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum