2009-07-22 13 views
0

je ne sais pas si mon titre est correctement articulé, mais j'ai le problème suivant:méthodes de demande sur https serveur

J'ai un serveur Web Java écrit auto, qui gère les requêtes entrantes des clients. Cela fonctionne bien avec toutes les méthodes de requête (GET, POST, HEAD, OPTIONS, DELETE, ...). Il fonctionne également très bien avec l'envoi de fichiers et d'autres choses quand j'utilise http. GET et POST fonctionnent également quand j'appelle une page sur https, mais toutes les autres méthodes de demande ne fonctionnent pas (Rien n'a changé dans le Javascript, cela envoie les demandes au serveur ... il fonctionne juste avec SSL) . Je n'arrive pas à trouver quoi que ce soit pour expliquer pourquoi c'est le cas. Les méthodes de requête fonctionnent-elles différemment lorsque j'ajoute SSL? Je pensais que c'était simplement un ajout pour rendre la communication plus sûre? Ai-je tort?

EDIT: Il existe également des différences entre les différents navigateurs ... la plupart ne parviennent même pas à envoyer la requête, le chrome est arrivé à readyState = 4 :(btw, j'ai testé avec Chrome 2.0, Firefox 3.0.11, Opera 9.63, IE7, IE8, Safari 3.2.1. quelqu'un

Hope peut faire la lumière.

Répondre

0

Le problème était dans l'appel de la fonction!

La fonction est définie comme suit:

function getHead(url, targetDiv){ 
    // generate the HTTPREQUESTOBJECT ... let's call it 'req' 
    req.open("HEAD", url, true); 
    // some more magic happens with the response 
} 

J'ai changé l'appel à la fonction de:

onclick="getHead('http://localhost/Home', 'optionsdiv') 

à:

onclick="getHead('localhost/Home', 'optionsdiv') 

Le premier appel est bien sûr pour http, pas pour https! si commutation qui fait fonctionner :) Une autre méthode que je trouve travailler aussi bien, suivait: ajouter un try-catch comme ceci:

try{ 
    req.open("HEAD", "https://"+url, true); 
} 
catch(err){ 
    req.open("HEAD", "http://"+url, true); 
} 

fonctionne presque parfaitement sur ma fin excpet les petites différences qui navigateur me rend fou!

1

les méthodes de demande doivent travailler les mêmes,

que vous attendez que ce soit HTTP ou HTTPS. il est vraiment difficile pour nous de vous aider parce que

  1. vous avez un serveur web Home Grown que personne ne sait que vous, et
  2. vous n'avez pas inclus un message d'erreur du client ou les journaux du serveur. "d'autres méthodes de demande ne fonctionnent pas" n'est pas assez descriptive. Vous allez devoir être beaucoup plus détaillé que ça.

En supposant un problème de connexion, je vous suggère d'essayer votre client sur un serveur Web bien connu pour voir s'il peut se connecter? Le problème pourrait être dans le client.

+0

1: si vous dites que http et https ne change pas le fonctionnement des requêtes, il est obsolète de savoir exactement comment le serveur fonctionne, surtout si GET et POST passent (comme mentionné ci-dessus). donc le problème doit être ailleurs. quant à 2 .: il n'y en a pas ... donc rien à inclure ...Si j'avais un message d'erreur, ne pensez-vous pas que je l'inclurais? Il semble que la fonction n'est même pas appelée ... J'ai essayé de la déboguer, mais mes fonctions ne sont pas appelées comme mes requêtes POST et GET via les fonctions js (qui fonctionnent parfaitement à la fois avec http et https ... mais j'ai mentionné cela avant). – doro

+0

edit: les fonctions sont appelées, mais elle s'arrête à un point encore inconnu (pour moi) :( – doro

Questions connexes