Angular Ionic 3.5.2 http请求中缺少授权标头

Angular Ionic 3.5.2 http请求中缺少授权标头,angular,ionic-framework,ionic2,Angular,Ionic Framework,Ionic2,我正在使用Ionic Framework 3.5.2进行测试,下面是版本信息 我需要发送一个附加了授权头的身份验证请求,以让用户登录到系统,如下所示 我总是收到404错误,我已经启用了CORS。我使用邮递员进行双重检查,我与邮递员发送相同的请求,看起来没有任何问题 我与fiddler进行了仔细检查,发现了一个差异,即缺少标头授权,它没有随我的请求一起发送。我的代码可能有点不对劲,因为邮递员工作正常,服务器实现没有问题 这是由邮递员发送的请求,带有授权头,所以没问题 这是我的请求,没有看

我正在使用Ionic Framework 3.5.2进行测试,下面是版本信息

我需要发送一个附加了授权头的身份验证请求,以让用户登录到系统,如下所示

我总是收到404错误,我已经启用了CORS。我使用邮递员进行双重检查,我与邮递员发送相同的请求,看起来没有任何问题

我与fiddler进行了仔细检查,发现了一个差异,即缺少标头授权,它没有随我的请求一起发送。我的代码可能有点不对劲,因为邮递员工作正常,服务器实现没有问题

这是由邮递员发送的请求,带有授权头,所以没问题

这是我的请求,没有看到发送的授权头,所以我得到了404

你能告诉我我错过了什么吗

编辑1:为Anexon添加屏幕截图

编辑2:[7月15日] 我看到Angular用方法选项发送我的请求,而邮递员使用的是有效的POST。我现在的问题是,我怎样才能像邮递员一样发送邮件

以防万一,为了支持该选项,我应该从服务器端实现做什么?但这是一个“以防万一”,服务器现在看起来与POST很好

这是邮递员的信

POSThttps://abc.xyz.com/SignIn HTTP/1.1
主持人:abc.xyz.com
连接:保持活力
内容长度:63
接受:application/vnd.softix.api-v2+json
邮递员代币:c2aa12cc-ea95-59d6-79de-4829b96b759b
缓存控制:没有缓存
产地:铬-extension://fhbjgbiflinjbdggehcddcbncdddomop
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/61.0.3147.0 Safari/537.36
授权:持票人yTJVNAb4\u 400brtea8monbuqhpkxuo6bvyiabbsdzmdbw\u RTG2\u tNME7R\u RqeFqMjg2
内容类型:application/json
接受编码:gzip,deflate,br
接受语言:en-US,en;q=0.8,vi;q=0.6

{“用户名”:“用户”、“密码”:“通过”}
您是否检查了
authHeader
变量是否为空


其次,我使用了以下
标题。append(“”,)
而不是
标题。set(“”,您是否检查了
authHeader
变量是否为空


其次,我正在使用以下
标题。append(“”),
而不是
标题。set(“”,我想我已经解决了我的问题。我使用了用于CORS的chrome扩展Allow Control Allow Orginin,我认为它可以工作,但它不能。我改为使用代理,然后现在一切正常,代码没有任何更改。

我想我已经解决了我的问题。我在CORS上使用了chrome扩展Allow Control Allow Orginin,我认为它可以工作,但没有。我改为使用proxy,然后就没事了,代码没有任何变化。

当然,Anexon,我已经添加了一个屏幕截图,我已经调试过了,authHeader和headers对象看起来都很好。我曾经使用过“append”,但它也不起作用。似乎您通过post选项传递的所有头都丢失了。它可能与RequestOptions构造函数有关。谢谢你Anexon,我已经更新了使用RequestionOptions,与w完全一样我发现Angular正在用方法选项发送我的请求,而邮递员使用的是有效的POST,我的没有。我现在的问题是,我如何才能像邮递员一样发送帖子?我还编辑了标题,以便您更容易查看。谢谢。以防万一为了支持该选项,什么我应该从服务器端实现吗?但这是一个“以防万一”,服务器现在看起来和POST一样好。Postman太“漂亮”,我们经常发现Postman把事情做得太简单了,当它进入生产阶段时,一切都失败了…但无论如何,这是一个好工具。您在服务器端使用Nginx吗?您可能需要更新服务器块以允许选项请求。我发现了这一点。似乎
内容类型应用程序/json
正在触发preflight选项请求。您是否尝试过发送ind
Content-Type
或使用contain
text/plain
发送它?当然,Anexon,我添加了一个屏幕截图,我已经调试过,authHeader和headers对象看起来都很好。我曾经使用过“append”,但它也不起作用。似乎您通过post选项传递的所有标题都丢失了。这可能会导致我可能与RequestOptions构造函数有关。谢谢你,Anexon,我已经更新了使用RequestionOptions的方式,与你的方式完全相同,但到目前为止运气不好。我发现Angular使用方法选项发送我的请求,而邮递员使用的方式有效,而我的方式无效。我现在的问题是,我如何才能像邮递员一样发送邮件?我也知道用标题编辑了我的问题,以便您更轻松地查看。谢谢。以防万一为了支持该选项,我应该从服务器端实现做什么?但这是一个“以防万一”,服务器现在看起来与POST配合得很好。Postman太“漂亮”,我们经常发现Postman把事情做得太简单了,当它进入生产阶段时,一切都失败了…但无论如何,这是一个好工具。您在服务器端使用Nginx吗?您可能需要更新服务器块以允许选项请求。我发现了这一点。似乎
内容类型应用程序/json
正在触发preflight选项请求。您是否尝试过不发送ind
内容类型
或使用contain
text/plain
发送它?
let authHeader = 'Bearer $(this.authTokenResponse.access_token)';

headers = new Headers();
headers.append('Authorization', authHeaders);
headers.append('Accept', 'application/vdn.softix.api-v2+json');
headers.append('Content-Type', 'application/json');

// ...
let options = {};
options.headers = headers;

post('<url_request>', signinRequest, options)
  .map(res => res.json())
  .subscribe(data =>{
    this.signinResponse = data;
    console.log(data);
  })