加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 具有jsonp有效负载的Express.js响应状态代码

发布时间:2020-12-17 07:01:29 所属栏目:安全 来源:网络整理
导读:我有一个MEAN-stack后端,我想回复 return res.status(400).jsonp({ message: 'Parsing failed.',code: '123'}); 当角度应用程序使用此JSONP端点并遇到此特定错误时,它会收到400但没有其有效负载.当我将状态更改为200/300时,它会很好,而400/500却没有. 在其他
我有一个MEAN-stack后端,我想回复

return res.status(400).jsonp({
  message: 'Parsing failed.',code: '123'
});

当角度应用程序使用此JSONP端点并遇到此特定错误时,它会收到400但没有其有效负载.当我将状态更改为200/300时,它会很好,而400/500却没有.

在其他路由(POST)上,我可以使用4 **状态代码和有效负载进行响应而不会出现任何问题.

return res.status(400).send({
  message: 'Codes do not match.',code: '234'
});

什么想法我忽略了什么?

解决方法

看起来这是一个浏览器:当请求远程脚本时(如JSONP请求的情况),并且响应返回400(或更高)HTTP状态,任何仍可在响应正文中返回的代码没有评估(这实际上是完全合理的).

Angular只会知道响应已经发送,并且它有错误状态,但由于没有调用回调,因此没有有效负载数据传递给回调.

我测试了一个独立的HTML页面:

<script>
function foo(data) { alert('foo') }
</script>
<script src="/endpoint?callback=foo"></script>

以下Express处理程序:

app.get('/endpoint',(req,res) => {
  return res.status(400).jsonp({ hello : 'world' });
});

400状态不会触发警报,200状态会触发警报.如果处理程序返回纯JS(它就像一个加载了< script src = ...>的简单.js文件),它也不起作用.

因此,对于JSONP请求,您应该坚持使用200个响应并以其他方式传达任何错误(例如在响应对象中设置错误属性).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读