Question

Ok, alors voici ce que je fais. Je fais une demande à un serveur pour extraire un fichier. Je le fais en faisant un WebRequest sur le site Web pour obtenir la réponse comme vous le feriez habituellement, bien que je reçoive une erreur 403 en disant que je ne possède pas les autorisations.

Le problème est que lorsque je connecte l'URL à Google Chrome, je suis redirigé et le fichier demandé redescend. J'ai essayé l'URL sur d'autres navigateurs et j'obtiens l'erreur 403.

Que fait Google Chrome pour lui permettre de contourner l’erreur 403? J'ai déjà essayé d'utiliser l'agent utilisateur Google Chrome, mais cela ne m'aide pas.

Aide

Était-ce utile?

La solution 3

Merci pour l'aide. Aucune de vos réponses ne m'a aidé directement, mais merci d'avoir essayé.

Mon programme essayait d'extraire un fichier d'un serveur. J'avais compris comment contourner les problèmes d'authentification et trouver le fichier sur le serveur avec Chrome. Il s'avère que leur service Web est plus avancé en utilisant des sessions utilisateur.

En gros, je n’avais pas accès aux commandes du service Web, je ne pouvais donc que me servir des URL http de base pour obtenir une réponse prédéfinie. L’URL des fichiers que j’utilisais pour obtenir le fichier du serveur n’était pas unique, c’était dynamique en fonction du navigateur / de la session. J'utilisais l'objet HTTPRequest pour obtenir le fichier HTML afin que je puisse l'analyser. Avec le fichier html, je l'ai analysé pour trouver l'ID dynamique du fichier (je pensais qu'il était unique). Ensuite, je lierais cela à la fin d'une URL. Dans Chrome, je serais redirigé et présenté avec l'invite de téléchargement. Le problème était que j'avais besoin de l'objet navigateur Web lorsque je voulais extraire le fichier. Sachant cela, j'ai utilisé l'objet Webbrowser pour obtenir l'ID de fichier, puis le même objet Webbrowser (techniquement les mêmes sessions que le serveur Web) pour extraire le fichier.

C'est plutôt compliqué. Fondamentalement, mon programme est un petit hack qui fournit des fonctionnalités que le serveur est bloqué.

J'espère que cela vous a aidé dans vos projets futurs.

Autres conseils

Le serveur Web reconnaît éventuellement l'agent utilisateur Chrome et autorise le téléchargement du fichier par celui-ci, mais pas par les autres agents utilisateurs. Configurez votre WebRequest pour utiliser les mêmes chaînes et paramètres d'agent d'utilisateur que Google Chrome. Par défaut, il se peut qu'il utilise les paramètres IE.

Modifier: Voici la l'instruction MSDN sur la procédure à suivre. définir la chaîne de l'agent utilisateur WebRequest . Pour connaître l’agent utilisateur de n’importe quel navigateur, entrez-le dans sa barre d’adresse:

javascript:prompt('my user agent string is', navigator.userAgent);

Le code de statut 403 indique la ressource que vous essayez d'atteindre. est interdit. En tant que, ne demandez pas parce que vous ne l'obtenez pas. Cela diffère du code 401 en ce qu'un défi d'autorisation est présenté avant que le serveur confirme la livraison de la ressource.

Bien qu'il s'agisse d'une configuration par programme, cela pourrait également s'expliquer par les restrictions d'accès à la ressource telle que configurée via le serveur Web.

Pouvez-vous vérifier que la ressource téléchargée dans Google Chrome est la ressource attendue que vous essayez d'atteindre?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top