gestisce correttamente un errore GET

3

Ho un sito web che accetta due stringhe primarie:

?type=GAME&id=SomeGameID
?type=SCENARIO&id=SomeScenarioID

per motivi sconosciuti, ho recentemente iniziato a ricevere richieste di stringhe errate sia da Yandex che da Baidu. Sono sempre in forma di:

?type=GAME&id=SomeScenarioID

Nessuno dei miei utenti sta attivando questi errori, quindi sono (in qualche modo) sicuro che ciò non sia dovuto a un errore del modello HTML da qualche parte sulla mia parte. Non c'è nemmeno HTTP_REFER visualizzato nell'array $ _SERVER, quindi suppongo che si tratti di richieste dirette provenienti da dati di dbase errati da parte loro.

Vedo due opzioni per gestire queste cattive richieste e vorrei sapere quale è raccomandato ... o se ci sono altre opzioni migliori a cui non ho pensato:

  1. semplicemente 404 la richiesta, poiché non è corretta
  2. reindirizza la richiesta a ?type=SCENARIO&id=SomeScenarioID perché gli ID scenario sono sempre validi, la rottura è dovuta alla richiesta del tipo sbagliato.
posta Drew 23.10.2012 - 03:09
fonte

3 risposte

7

Continuerò a rifiutare la richiesta, tuttavia poiché l'URL richiesto è presente, il codice di errore 400 sembra più appropriato.

Dal w3 link :

10.4.1 400 Bad Request

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.

    
risposta data 23.10.2012 - 06:07
fonte
2

Preferirei 404 oltre 400 in questa situazione. 400 significa che la richiesta è malformata, ma la richiesta che hai descritto non è malformata. La richiesta è per un GIOCO che non esiste; questa è la definizione dell'errore 404.

Se ci fosse un modo per sapere: la richiesta è per un GAME, ma l'ID dato è chiaramente un ID di scenario, quindi questa sarebbe una sintassi malformata. Tuttavia, in base alle tue dichiarazioni nei commenti, non vi è alcuna differenza visibile tra gli ID dei giochi e gli ID degli scenari. L'ID del gioco richiesto è un ID valido, semplicemente non esiste.

Questa è la stessa ragione per cui la tua idea di reindirizzamento non sarebbe buona. Non puoi sapere che qualcuno sta effettivamente cercando uno SCENARIO se ha chiesto specificamente un gioco. Se un consumatore ha chiesto un GAME, ma ha accidentalmente passato un ID errato e è stato reindirizzato a uno SCENARIO, sarebbe terribilmente confuso.

    
risposta data 23.10.2012 - 20:56
fonte
1

Concordo che 400 è una risposta migliore di 404.

Quando dici "Suppongo che si tratti di richieste dirette da parte di dati errati di dbase da parte loro". Lo interpreto nel senso che le richieste provengono da web crawler. In questo caso, un'altra alternativa sarebbe quella di configurare il file robots.txt del tuo sito per dire ai crawler Yandex e Baidu di rimanere fuori dalla parte del tuo sito con le query. O forse basta bloccarli.

Supponendo che si tratti di un'attività del crawler, il problema potrebbe non essere un dato cattivo (che avrebbe dovuto provenire da qualche parte). È possibile che i motori stiano provando alternative in modo piuttosto debole per raccogliere cose che non sono direttamente collegate. (Sembra una cosa stupida da fare, ma non si sa mai ...)

D'altra parte, se non si tratta di attività del crawler web, forse è il risultato di alcuni utenti che tentano di accedere al tuo sito utilizzando alcuni client personalizzati anziché utilizzare l'interfaccia utente implementata dai tuoi modelli web. Ciò spiegherebbe anche la mancanza di intestazioni dei referrer.

    
risposta data 23.10.2012 - 12:44
fonte

Leggi altre domande sui tag