有人可以解释这两个http调用之间的区别,为什么一个失败但另一个失败吗?

雪佛兰

因此,我在工作时继承了一个应用程序,并且遇到了一些我不太了解的代码。

该应用程序包含一个服务器端API和一个调用它的客户端单页应用程序。Angular中有一个帐户服务,可以调用API进行登录。该API为该API的域设置了一个身份验证Cookie,我们所有人都将继续进行经过身份验证的API请求。

我不明白的是,为什么项目的先前所有者必须对要输入API的数据进行urlencode,并application/x-www-form-urlencodedContent-Type标头包含一个

var qs = require('qs');
var user = { username: 'someUser', password: 'somePassword' };
$http.post(`${API_URL}/login`, qs.stringify(user), {
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});

然后,此请求将从重定向API_URL/loginAPI_URL/account该请求将现在登录的帐户对象返回到应用程序。上面的代码都可以正常工作,我只是不完全理解为什么必须对数据进行url编码。如果我删除Content-Type标题并且不对数据进行url编码,则会收到以下CORS错误(API服务器在本地主机:5000运行,客户端应用在本地主机:3000运行。在服务器上启用了CORS以允许来自localhost:3000的跨域请求):

XMLHttpRequest无法加载http:// localhost:5000 / login该请求已重定向到“ http:// localhost:5000 / account ”,对于需要预检的跨域请求是不允许的。

var user = { username: 'someUser', password: 'somePassword' };
$http.post(`${API_URL}/login`, user);

谁能解释这是怎么回事?这不像URL编码那样,数据改变了请求被重定向的事实,但是在第一种情况下请求成功并按预期响应,而在第二种情况下抛出CORS错误。

亚伦·佛朗哥(Aaron Franco)

服务器设置为仅接受URL编码的表单数据。删除该标头时,您将发布服务器无法完全理解的原始JSON正文。似乎请求已被重定向到一个帐户路由,该帐户路由不接受其自身域起源之外的HTTP请求。如果发送标头,则应该看到相同的错误

Content-Type: application/json

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有人可以解释这两个代码之间的区别吗?代码是找到树中最深叶子的总和

是否可以将这两个函数合并为一个调用另一个

有人可以根据与另一个列表的比较来解释拆分列表元素吗?

有人能告诉我为什么这些 JavaScript 代码中的一个有效而另一个无效吗?

有人可以帮助解释这两个线程的输出吗?

有人可以了解这两个 Express-React-Node 应用程序之间的区别吗?

垂直导航栏-有人可以解释为什么第一个有效而第二个无效吗?

有人可以解释为什么在这个简单的 SQL 查询中这两个结果不同吗?

有人可以解释为什么array_merge()不会合并这两个看似相同的数组吗?

这两个C函数调用之间有什么区别?

C#中这两个方法调用之间有什么区别?

这两个MSBuild调用之间有什么区别

有人可以解释为什么这些 webkit 动画功能之一有效而另一个无效。我知道它的类与 ID 但为什么呢?

这两个SQL语句是否等效?一个有效,另一个无效

为什么使用模拟类中另一个函数调用的函数的测试失败?

两个DateTime:一个有效,为什么另一个不起作用?

两个绑定;一个有效,另一个无效。为什么?

有人可以澄清为什么如果我使用一个变量是错误的,但如果我将其更改为另一个变量,我会得到正确的解决方案吗?

这两个简单的python代码有什么不同?(一个有效,另一个无效)

有人可以解释一个感叹号吗?

有人可以解释这段代码中的最后一个方法吗?

这两个以制表符分隔的 .txt 文件之间的区别是什么导致 .split("\t") 正确地将值与一个而不是另一个分开?

这两个函数调用之间的区别

JavaScript:如何从一个函数返回两个值并在另一个函数中调用这两个变量?

有什么方法可以通过另一个函数参数调用一个函数吗?

有人可以解释为什么我的打印语句没有同时打印两个变量吗?

从另一个调用一个构造函数有什么利弊吗?

为什么有人建议您尝试使用另一个USB端口?

从另一个文件调用函数失败