有一个带有AJAX API的网站。我打开Firebug来查看登录HTTPS POST请求的详细信息。
然后我尝试使用Apache HTTP Client从我的Java程序执行相同的POST请求。但不知何故,服务器将我的请求标识为非浏览器请求。它发送一条安全异常消息,告诉我。
当所有请求标头都相同时,还有什么可以将我的客户端识别为浏览器?
答案 0 :(得分:1)
user-agent
标题? "httpclient.useragent" property
Use debug mode查看完整的电汇记录,并将请求与firebug的请求进行比较。
答案 1 :(得分:1)
不知道POST请求,但是有一个多部分请求
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
看看它是否有任何帮助
编辑:多部分请求的代码示例
String createOrderUrl = Constants.CREATE_ORDER_URL;
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(createOrderUrl);
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
// add the information to the multipart request
entity.addPart("msisdn", new StringBody("something"));
entity.addPart("recipientname", new StringBody("something"));
entity.addPart("recipientnumber", new StringBody("something"));
entity.addPart("recipientaddress", new StringBody("something"));
// add the images
for (String imagePath : selectedImages)
{
FileBody bin = new FileBody(new File(imagePath));
entity.addPart("image", bin);
}
httpPost.setEntity(entity);
return httpClient.execute(httpPost);
答案 2 :(得分:1)
我的猜测是这是一个cookie问题(例如浏览器存储的JSESSIONID)。在POST中包含会话信息。看看这个网站的cookies。尝试禁用此网站的Cookie,再次查看请求。