我在 localhost:portNo1 有一个从 Python 中的 BaseHTTPServer.HTTPServer 创建的服务器
客户端位于 localhost:portNo2 和客户端,我正在发出一个 jQuery $.ajax POST 请求,如下所示:
var request = $.ajax({
url: "http://localhost:portNo1",
type: "post",
dataType: 'json',
data: json_data
});
在服务器端,服务器从客户端获取数据并回复其数据。
def do_POST(self):
# Get client data
length = int(self.headers.getheader('content-length'))
data_string = self.rfile.read(length)
print data_string;
# Create response object
jsonObjStr = json.dumps(jsonObj);
self.send_response(200)
self.end_headers()
self.wfile.write(jsonObjStr);
发生的情况是服务器正在获取我发送的数据,但没有回复客户端,并且 $.ajax 对象的失败事件的回调在客户端执行(错误消息)。我调试并验证了 jsonObj 没有任何内容。但我看不到 self.wfile 对象内部的内容。
在 JS 控制台上,我也收到以下错误(它显示在 Google Chrome 的 JS 控制台中,但未显示在 Firefox JS 控制台中):
XMLHttpRequest cannot load localhost:portNo1 . Origin localhost:portNo2 is not allowed by Access-Control-Allow-Origin. client.html:1
Google Chrome 的 JS 控制台指向 html 文件,但这对我来说也没有意义。
查了一下网站,貌似一般是跨域请求导致的。但是,我正在从一个本地主机端口通信到另一个。