10
votes

Utilisation d'Ajax et de JQuery pour vérifier si le fichier existe - renvoie toujours 200 réponse

Donc, j'ai besoin de vérifier si un fichier existe avant d'afficher des données spécifiques aux clients ... à l'aide de jQuery, j'ai ceci: xxx

lorsque je tente d'exécuter la fonction: xxx

(où exemple.com est mon domaine), je reçois toujours un code de réponse 200. Je me demandais pourquoi cela pourrait se produire - pourrait-il être que j'ai une page d'erreur personnalisée définie via .htaccess? Ou, existe-t-il une meilleure méthode pour faire cela?

note : jQuery 1.5.1 est utilisé.

update : Il semble que cela soit dirigé vers notre page d'erreur personnalisée via .htaccess: xxx

Je ne sais pas si cela provoque le conflit ou comment se déplacer.

résolu

J'ai vérifié les en-têtes de ma page 404 personnalisée, il renvoyait un code de réponse 200. Devait du disque dur l'en-tête: xxx

qui renvoie ensuite le code de réponse 404 - fixant mon problème.


6 commentaires

Arrive même lorsque le fichier n'existe pas?


Oui, par exemple: 123.jpg n'existe pas sur le serveur, mais il renvoie un code de statut de 200 quand même.


On dirait que le serveur n'est pas correctement configuré correctement. Que se passe-t-il quand vous obtenez cette ressource? Avez-vous toujours 200, mais avec du contenu qui suggère 404? Dans ce cas qui sonne comme une configuration incorrecte.


Essayé d'utiliser get, toujours pas de dés -

4 Réponses :


10
votes

Pourquoi ne réalisez-vous pas cette asynchrone avec les rappels succès et erreur ?

$.ajax({
   type: 'HEAD',
   url: fileLocation,
   success: function(msg){
     alert(msg);
   },
   error: function(jqXHR, textStatus, errorThrown){
     log(jqXHR);
     log(errorThrown);

   }
 });


2 commentaires

En utilisant votre méthode, je peux voir que cela constate de notre page d'erreur 404 personnalisée et de revenir à 200 en conséquence. Toute façon autour de cela?


Remarque: Ne pas faire quelque chose de fou de .htaccess pour cela - errordocument 404 http://www.example.com/errors/notfound.php



9
votes

Il est apparu que mon émission existait avec ma page personnalisée 404, qui renvoyait un code de statut 200. Je devais avoir un code difficile le code de réponse 404 à l'aide de la fonction PHP Header (), qui a résolu le problème que j'avais. Maintenant, si la page n'existe pas, il suit correctement:

Utilisation d'une méthode simple pour tester si la page / fichier existe pour le moment: xxx

merci à @kalyfe pour le suggestion à passer à la méthode Async.


2 commentaires

Depuis PHP 5.4, vous pouvez utiliser http_response_code (404); pour définir un code d'état 404.


Il y a une autre manière plus sécurisée. Si vous utilisez la sécurité pour limiter l'accès au fichier à la demande du client. Pointez sur un fichier PHP et envoyez le chemin de fichier en tant que variable de poteau ou quelle que soit votre saveur. Ensuite, vous pouvez filtrer Cochez la case Var et sortir un Val personnalisé pour contourner la sécurité de l'accès refusé par le client. Cela devrait également accorder / accorder un accès limité au client. Comme toujours, vérifiez l'entrée pour les caractères et la longueur autorisés. Je vais poster une réponse quand je le construit.



-1
votes

fonction async / attendre

C'est une sorte de façon moderne de le faire. Je cherchais à trouver la meilleure solution de contournement future pour le XHR et Ajax synchrones amorti.

personnellement, j'ai besoin de sécurité afin que certains fichiers ne soient pas disponibles au public. Cela signifie qu'une fonction latérale du client ne fonctionnera tout simplement pas. J'ai besoin d'un script côté serveur pour vérifier si ces fichiers existent.

J'ai regardé autour de moi et j'ai eu du mal à trouver ceci pour ce dont j'avais besoin de faire. Il y a des utilisations bien documentées, mais celle-ci m'a aidé et peut être utilisée comme une autre façon de résoudre la question / problème de l'OP. xxx

Je veux souligner que vous pouvez souligner que vous pouvez signaler que vous pouvez signaler avoir un nombre quelconque de variables dans la réponse JSON du fichier PHP. Cependant, la petite quantité est la plus petite comme toujours.


0 commentaires

0
votes

Quoi de Go $. Obtenez CODE> , qui est juste Un raccourci pour JQuery Ajax?

P>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Image url: <input type="text" id="imgUrl" value="https://upload.wikimedia.org/wikipedia/commons/7/75/Woman_mechanic_working_on_engine_%28cropped%29.jpeg"><br>

<button id="myButton" type="button">click here to load image</button>

<div id="imgText"></div>
<img>


0 commentaires