Coldfusion API REST retour « échec de la connexion. code d'état indisponible. lorsqu'il est appelé à distance

StackOverflow https://stackoverflow.com/questions/3902654

Question

Maintenant, je veux préfixer avec ce que je ne suis pas sûr que cela devrait être ici ou sur la faute du serveur, donc je vais le poster ici pour commencer.

Nous développons une API REST dans Coldfusion 9 qui est hébergé sur IIS 7 pour un client qui, à certains appels doit appeler un autre webservice interne. Lors de ces appels à partir du serveur que l'API est hébergé sur il n'y a pas d'erreurs, mais quand nous faisons l'appel depuis une machine distante, le message suivant est renvoyé:

  

'échec de la connexion. code d'état indisponible.

J'ai googlé la question où les éléments suivants a été proposé comme une solution http://www.talkingtree.com/blog/index.cfm/2004/7/28/20040729 mais il ne fonctionne pas pour moi. Voici les notes de mes propres tests:

  • Les appels qui sont à l'origine de la question sont un mélange de get, put, après et supprimer.
  • La seule partie commune de chaque appel est la parole à la même webservice.
  • Je suis en mesure d'appeler le webservice directement à partir des endroits où je fais les appels à distance à l'API à partir.
  • Alors que tous les appels font un appel à la même webservice ils ne font pas tous le même appel au webservice.
Était-ce utile?

La solution 2

La question se révèle être que chacun des appels nécessitant l'authentification de base que les appels eux-mêmes ont été la manipulation, mais l'authentification de base avait été activée dans IIS qui était à l'origine IIS pour intercepter toutes les demandes avec un en-tête d'autorisation.

Cela provoque un problème comme IIS suppose que si l'authentification est laissé passer alors il est pour un utilisateur sur cette machine / domaine et rejette toutes les autres lettres de créance (qui étaient valables pour le système). Il travaillait quand on a ouvert une session dans la machine, car il venait localement, il n'a pas besoin d'authentifier l'utilisateur.

Autres conseils

Idées:

Appelez le service Web à distance en utilisant une URL qui résout au serveur ColdFusion interne (par exemple http: // [nom_serveur]: 8300). Vous aurez probablement une certaine configuration pour obtenir ce travail. La raison de le faire est d'identifier si IIS ou ColdFusion est la cause racine. Si vous pouvez frapper le serveur interne à distance alors IIS est probablement la question.

L'appel de service Web via SSL? Si oui, est l'appelant à distance aussi ColdFusion? Si vous avez répondu à la fois oui, vérifiez si le certificat SSL est approuvé par machine virtuelle Java de l'appelant à distance. Sinon, vous devez l'enregistrer dans le cadre du keystore de la machine virtuelle Java.

Pouvez-vous ping sur le serveur hôte de l'appelant? Dans la négative, la nécessité de l'appelant une entrée « hosts »?

Si activé sur votre hôte, consultez le filtre .NET et comment il interagit avec les appels HTTP. J'ai vécu une situation où je ne pouvais pas accéder à un dossier appelé « / bin » parce que le filtre .NET intercepté les requêtes.

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