请求https-server上的方法

时间:2009-07-22 11:22:37

标签: java http https webserver

我不知道我的标题是否正确表达,但我有以下问题:

我有一个自编写的Java Web服务器,可以处理传入的客户端请求。它适用于所有请求方法(GET,POST,HEAD,OPTIONS,DELETE,...)。当我使用 http 时,它也可以正常发送文件和内容。 当我通过 https 调用页面时,GET和POST也可以工作,但所有其他请求方法都不起作用(Javascript中没有任何更改,将请求发送到服务器...它只是用SSL运行)。我似乎无法找到为什么会这样的情况。添加SSL时,请求方法的工作方式是否有所不同?我认为这只是让沟通更安全的补充吗?我错了吗?

编辑:不同浏览器之间也存在差异...大多数人甚至没有发送请求,chrome已经到了readyState = 4 :(顺便说一下,我用Chrome 2.0测试过,Firefox 3.0.11,Opera 9.63,IE7,IE8,Safari 3.2.1。

希望有人能说清楚。

2 个答案:

答案 0 :(得分:1)

请求方法应该像HTTP或HTTPS一样工作。

我们很难帮助你,因为

  1. 你有一个本土的网络服务器,没有人知道,但你和
  2. 您未包含来自客户端的任何错误消息或来自服务器的日志。 “其他请求方法不起作用”只是描述性不够。你必须要比这更详细。
  3. 假设存在连接问题,我建议您在知名的Web服务器上试用客户端,看看它是否可以连接?问题可能出在客户端。

答案 1 :(得分:0)

问题在于对函数的调用!

该功能定义如下:

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

我改变了对函数的调用:

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

为:

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

第一个电话当然只适用于http,而不适用于https!所以切换使它工作:) 我发现另一种方法也是如下:我添加了一个像这样的try-catch:

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

在我的结尾几乎完美地工作,激发了一点点浏览器差异,这让我感到疯狂!