selon les spécifications du protocole HTTP 9.4 HEAD
La méthode HEAD est identique à GET sauf que le serveur NE DOIT PAS retourner un corps de message dans la réponse. La méta-information contenue dans les en-têtes HTTP en réponse à une demande HEAD DEVRAIT être identique à l'information envoyée en réponse à une requête GET. Cette méthode peut être utilisée pour obtenir une méta-information concernant l'entité impliquée par la demande sans transférant le corps d'entité lui-même. Cette méthode est souvent utilisée pour tester les liens hypertextes pour la validité, l'accessibilité et la modification récente .
La réponse à une demande de tête peut être cacheable dans le sens où les informations contenues dans la réponse PEUT être utilisée pour mettre à jour une entité précédemment en cache de cette ressource. Si les nouvelles valeurs de champ indiquent que la entité en cache diffère de l'entité actuelle (comme cela sera indiqué par un changement Content-Length, Content-MD5, ETag ou dernière modification), le cache DOIT traiter l'entrée du cache est obsolète.
Si votre serveur ne répond pas correctement à ce que je pense que vous pourriez ne pas avoir de chance? Ensuite tout simplement utiliser google.request('HEAD'
au lieu de google.request('GET'
Certains Code
Je l'ai testé ce qui suit ci-dessous. fake.js est juste un faux serveur utilisant express pour tester.
fake.js:
var HOST = 'localhost';
var PORT = 3000;
var connections = 0;
var express = require('express');
var app = module.exports = express.createServer();
if (process.argv[2] && process.argv[3]) {
HOST = process.argv[2];
PORT = process.argv[3];
}
app.use(express.staticProvider(__dirname + '/public'));
// to reconnect.
app.get('/small', function(req, res) {
console.log(req.method);
if (req.method == 'HEAD') {
console.log('here');
res.send('');
} else {
connections++;
res.send('small');
}
});
app.get('/count', function(req, res) {
res.send('' + connections);
});
app.get('/reset', function(req, res) {
connections = 0;
res.send('reset');
});
if (!module.parent) {
app.listen(PORT, HOST);
console.log("Express server listening on port %d", app.address().port)
}
test.js est de tester la tête de http-client. test.js:
var http = require('http');
var google = http.createClient(3000, 'localhost');
var request = google.request('HEAD', '/small',
{'host': 'localhost'});
request.end();
request.on('response', function (response) {
console.log('STATUS: ' + response.statusCode);
console.log('HEADERS: ' + JSON.stringify(response.headers));
response.setEncoding('utf8');
});
[email protected]:~/node/stackoverflow/4832362$ curl http://localhost:3000/count
0
[email protected]:~/node/stackoverflow/4832362$ node test.js
STATUS: 200
HEADERS: {"content-type":"text/html; charset=utf-8","content-length":"0","connection":"close"}
[email protected]:~/node/stackoverflow/4832362$ curl http://localhost:3000/count
0
Comme vous pouvez le voir encore 0.
fantastique! Merci. – Carlosedp
votre accueil: P – Alfred