我的问题是什么可能导致服务器响应HTTP错误400.请求URL对于HTTPS请求无效,但对HTTP请求无效?
仅在使用HTTPS进行POST时才会出现此错误。使用HTTP的相同消息工作正常。我在这个例子中控制了客户端和服务器应用程序。
在服务器端,我有一个简单的.NET Windows服务HTTPListener,其中包含" https:// *:443"前缀
HttpListener listener = new HttpListener();
listener.Prefixes.Add("https://*:443/");
listener.Start();
我知道我说HTTP不起作用,而HTTPS却没有。对于此示例,我删除了http前缀,因为您想知道
客户端我使用WFetch进行测试。
这是产生错误的请求:
POST HTTP/1.0
Content-type: text/xml
Content-length: 1505
host: somewhere.com:443
<?xml version = '1.0' encoding = 'UTF-8'?>
<cXML version="1.1.007" xml:lang="en-US" payloadID="1234" timestamp="2016-02-05T02:16:31-05:00">...</cXML>
我尝试了各种似乎有用的东西,(即使用HTTP代替HTTPS并使用我编写的.NET应用程序来制作HttpWebRequest)。问题是客户端是一成不变的。上述请求无法进行大量修改。这就是为什么我试图理解当前请求为什么会产生此错误以及可能需要在服务器端更改以适应此请求的原因。
如果我将请求减少到一行,请注意:
POST HTTP/1.0
它会产生相同的错误。因此,我不确定是否存在安全证书不匹配(或者如果存在,则甚至会产生错误)。我很感激你的帮助。
答案 0 :(得分:3)
在www.w3.org,RFC 2616州:
400 Bad Request:由于语法格式错误,服务器无法理解该请求。客户不应该在没有修改的情况下重复请求。
我相信你的请愿书缺少网址:
POST /my-url HTTP/1.0