在接收HTTP响应时出现Response is null
错误。
我正在开发一个使用行套接字的示例小型HTTP服务器C
。HTTP发送对OPTIONS请求的响应[C]
我的应用程序中实际上有2个服务器,一个是我用于提供HTML页面的标准Apache服务器,而我的小型服务器将只响应HTML页面中的Javascript发送的XMLHttpRequest
。
我从JavaScript发送请求如下:
var sendReq = new XMLHttpRequest();
endReq.open("POST", "http://localhost:10000/", true);
sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sendReq.onreadystatechange = handleResult;
var param = "REQUEST_TYPE=2002&userName=" + userName.value;
param += "&password=" + password.value;
sendReq.send(param);
当我把这一请求,我会收到以下在我的服务器代码请求:
OPTIONS/HTTP/1.1
Host: localhost:10000
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://localhost:7777
Access-Control-Request-Method: POST
我已经回答了这个请求,利用如下套接字写功能:
HTTP/1.1 200 OK\n
Access-Control-Allow-Origin: *\n
Server: PSL/1.0 (Unix) (Ubuntu/Linux)\n
Access-Control-Allow-Methods: POST, GET, OPTIONS\n
Accept-Ranges: bytes\n
Content-Length: 438\nConnection: close\n
Content-Type: text/html; charset=UTF-8\n\n
我不知道应该是HTTP实际响应e根据OPTIONS的要求发送。
在此之后,我感到我已经从JavaScript发送我的实际POST请求,然后我进行回应与
HTTP/1.1 200 OK\n\n
,然后在浏览器端出现错误Response is null
。
那么如何使用'C'中的行套接字将报头/数据作为HTTP响应发送,以及如何响应OPTIONS请求。有人可以通过举例来解释我吗?