当前位置: 首页 > 知识库问答 >
问题:

设置标头时的飞行前问题Angular 2

阎庆
2023-03-14

我正试图通过构建一个简单的spotify应用程序来学习angular 2。

但不知何故,我被困在身份验证过程中。

我的问题是,当我尝试发送标题设置为https://accounts.spotify.com/api/token的超文本传输协议帖子时

let tokenUrl = 'https://accounts.spotify.com/api/token';

    let keyEncrypted = btoa( this.client_id + ':' + this.client_secret);

    let authHeaders = new Headers();
    authHeaders.append('Content-Type', 'application/x-www-form-urlencoded');
    authHeaders.append('Authentication', 'Basic ' + keyEncrypted);

    let options = new RequestOptions({headers: authHeaders});

    let body = 'code=' + authCode + '&grant_type=authorization_code' + '&redirect_uri=' + this.redirect_uri;

    let jsonString = JSON.stringify({
      code: authCode,
      grant_type: 'authorization_code',
      redirect_uri: this.redirect_uri
    })


    return this._http
        .post(
          tokenUrl, 
          jsonString,
          options
          ).map( res => {
            res.json();
          })

我在飞行前收到“对飞行前请求的响应未通过访问控制检查:没有‘访问控制允许来源’……”

但当我从返回中删除标题时

return this._http
        .post(
          tokenUrl, 
          jsonString // Header removed
          ).map( res => {
            res.json();
          })

飞行前检查似乎已被绕过,但我得到一个媒体类型不允许的错误。

所以我现在很困惑,想知道:1。为什么发送不带标题的post会绕过飞行前检查,而发送带标题的post则不会?2.设置和未设置头时,angular http post发送不同类型的请求吗?

非常感谢。

共有2个答案

武元白
2023-03-14

此处 - 文本/纯标头不会触发 CORS 预逃亡。删除内容类型标头将默认为文本/纯文本。

尝试使用浏览器并在不安全模式下启动它 - PowerShell中的一个例子是

<代码>

佘茂才
2023-03-14

你必须明白你应该如何从Spotify获得令牌。但是看看你的代码,我可以从Spotify文档的这一行告诉你

authHeaders.append('Authentication', 'Basic ' + keyEncrypted);

可能应该是

authHeaders.append('身份验证','承载'密钥加密);

首先,尝试使用Postman或Curl等程序从Spotify API获取令牌,使用令牌发出请求,然后一旦从API接收到数据,并且清楚地了解了流程应该如何工作,就可以尝试使用Angular2应用程序。

 类似资料:
  • 我让这个项目在Angular 8中运行,并使用飞行前和实际的api调用api。而且我们在它的网络安全上有一个问题,因为飞行前的选项没有标题严格的传输安全性:max age=31536000;includeSubDomains,而实际的GET api有一个。 您是否知道如何以及在哪里添加严格运输安全:max-age=31536000;包括预飞行和实际请求下的子域,以便两个请求将具有相同的标头?

  • 在调试我遇到的CORS问题时,我发现了以下行为。Chrome发出以下选项预检请求(由Chrome本身在CURL中重写): 以下情况下服务器对此请求的响应: 是响应“无效CORS请求”的主体。如果我重复该请求,删除标头“Access Control request Method”(仅该标头),则OPTIONS请求将成功,并得到以下响应: 然而,有问题的头是CORS规范标准头,所以它不应该阻止请求成功

  • 我不清楚CORS头(Access-Control-Allow-Origin等)是否应该只出现在飞行前请求(OPTIONS方法)中,还是也出现在资源的头中(我试图使用XHR发布)

  • 本文向大家介绍IOS倒计时设置UIButton标题title的抖动问题,包括了IOS倒计时设置UIButton标题title的抖动问题的使用技巧和注意事项,需要的朋友参考一下 例如,在发送验证码后,button状态需要变为disable,每隔一秒显示倒计时时间,仅仅设置 或 是不够的,按钮会一闪一闪的抖动。 需要同时设置: 或 以上所述是小编给大家介绍的IOS倒计时设置UIButton标题titl

  • 我正在从主机(http://abc.com.au)向主机http://localhost:8081上运行的Spring Cloud API网关发送ajax请求。 jquery AJAX请求代码。 SimplifiedAdoptionBulkUpload.jsp spring cloud gateway cors配置。 我在chrome控制台中遇到以下错误。 SimplifiedAdoptionBu