我的ajax请求看起来像这样
$.ajax({
url: baseUrl,
type: 'POST',
data: JSON.stringify(sendData),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (msg) {
alert(msg);
}
});
其中baseUrl
是一个字符串,sendData
是要发送的对象。
我的问题是我没有按预期在服务器中收到我的数据。我在我的服务器中使用nodeJs(带有body-parser的expressJs来解析请求中的JSON)。
但是,当我使用Chrome商店中的Advanced Rest Client Application时,我会按预期获得数据。我认为我的客户端代码是错误的。
答案 0 :(得分:0)
通常是跨域问题。是baseURL和html页面在同一个域上?
答案 1 :(得分:0)
我明白了这个问题。
请求跨域资源时,Web浏览器以OPTIONS
作为http方法发送虚拟请求,以检查服务器是否支持跨域请求。此请求称为"预检"。在我的情况下,我发送了一个401,用于请求体中没有包含authKey的任何请求。因此,当Chrome执行第一次预检请求时,它得到了错误的响应。所以Chrome没有尝试第二次请求。
我通过设置Access-Control-Allow-Origin
解决了这个问题
每当服务器收到*
请求时,在响应标头中为OPTINS
。