最近在使用360浏览器时,发现了一个有趣的问题——我们从服务器获取到的json结果会被自动拦截为一个文件
首先,我们来看一下代码:
$.ajax({ url: "/api/user",dataType: "json",success: function(data) { console.log(data); } });
像这样从服务器请求数据,然后控制台输出数据的代码,一般是没有问题的。然而,当我们使用360浏览器时,控制台输出的并不是我们期望的json数据,而是一个下载下来的文件,包含了我们从服务器获取的json数据。
那么,这是为什么呢?其实,这是因为360浏览器会自动将一些看起来像是json数据的文本识别为json文件,并将其下载到本地。因此,如果我们想在360浏览器上正常获取json数据,我们需要在服务器返回数据时明确地告诉浏览器这是一段json数据,而非文件。
我们可以在服务器端添加如下的脚本,将返回数据的content-type设置为"application/json":
app.get('/api/user',function(req,res){ var user = { name: 'John',age: 27 }; res.setHeader('Content-Type','application/json'); res.send(JSON.stringify(user)); });
这样,当我们在360浏览器请求返回的数据时,就可以正常获取到json数据了。
总之,虽然这个问题只在使用360浏览器时出现,但在我们的web开发中还是需要谨慎对待,尤其是对于json数据的返回,我们一定要在服务器端进行正确地设置,以保证能够正常获取到数据。