gpt4 book ai didi

jquery - 在node.js Express中,如何在jquery中的内容协商中判断HTTP请求是application/json还是html

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:29 29 4
gpt4 key购买 nike

我希望我的node.js服务器根据请求的内容类型发送不同的内容,我的服务器代码是这样的

    if(req.accepts('text/html')){
console.log("accepts('text/html')");
locals.page = 'posts';
res.render('question.ejs', locals.questions);
}
else if(req.accepts('application/json')){
console.log("'application/json'");
res.json(200,locals.questions);
}

有一个类似的帖子,但仅适用于 Android 客户端 in node.js express, how to tell the HTTP request is application/json or html on the content negoition

这是我的 Jquery 代码

$.ajax({ 类型:“获取”, url: "/course/abc/questions", contentType:"application/json; charset=utf-8", 数据类型:“json”, 成功:函数(数据){ console.log(数据.长度,数据); } });

由于某种原因,即使我在 appication/json 上设置了内容类型,node.js 服务器端仍然接受 html 而不是 json。

有点奇怪

最佳答案

GET 请求 (jquery) 与响应 (express) 的 header 不同。在 request/browser/jquery/ajax 端,当发出 GET 请求时,您设置 Accept标题,意思是“我想取回这些格式之一”。没有 Content-Type header ,因为 GET 请求没有正文,因此该 header 不适用。

在服务器端,您设置Content-Type,意思是“此响应正文具有以下格式”。 Accept 的语义可以是替代格式的列表,而 content-type 只是单个值。

这是从 this answer 复制的片段

$.ajax({
headers: {
Accept : "application/json; charset=utf-8"
},
success : function(response) {
...
}
})

关于jquery - 在node.js Express中,如何在jquery中的内容协商中判断HTTP请求是application/json还是html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18411219/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com