...
The command-line examples above suggest a tool based on curl
is possible. In fact, a tool that implements HTTP conditional GET can be downloaded from GitHub. It's a bash script called cget
that caches the HTTP response header along with the resource. In this way, subsequent requests can provide the appropriate request headers. If the server supports conditional GET, and the resource has not changed since the previous GET (as indicated by HTTP 304), the script accesses the resource from cache.
Let's use the script to illustrate HTTP conditional GET (as we did with curl
above). Here's how to fetch and cache a metadata file:
Code Block | ||
---|---|---|
| ||
$ echo $MD_LOCATION http://md.incommon.org/InCommon/InCommon-metadata.xml $ cget.sh -H $MD_LOCATION HTTP/1.1 200 OK Date: Tue, 30 Dec 2014 19:28:30 GMT Server: Apache Last-Modified: Mon, 29 Dec 2014 20:24:24 GMT ETag: "110328-b28945-50b60a9050e00" Accept-Ranges: bytes Content-Length: 11700549 Connection: close Content-Type: application/samlmetadata+xml |
Subsequent requests will produce HTTP 304 responses as long as the metadata file does not change:
Code Block | ||
---|---|---|
| ||
$ cget.sh -H $MD_LOCATION
HTTP/1.1 304 Not Modified
Date: Tue, 30 Dec 2014 19:29:01 GMT
Server: Apache
Connection: close
ETag: "110328-b28945-50b60a9050e00"
|
Later versions of Shibboleth (at least IdP 2.2 and SP 2.4) implement HTTP conditional GET (and more) so the above script is not particularly useful unless you're running something other than Shibboleth. For instance, simpleSAMLphp does everything except HTTP conditional GET, so users of simpleSAMLphp might find the above script useful.
...