首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >报头问题(Angular):服务器在同一请求中返回401和200?

报头问题(Angular):服务器在同一请求中返回401和200?
EN

Stack Overflow用户
提问于 2017-10-31 22:04:45
回答 1查看 51关注 0票数 0

我有一个小的应用程序请求一个API的服务。我将凭证设置如下:

代码语言:javascript
复制
this.http.get<Response>(url, {
        headers: new HttpHeaders().set('Authorization', 'Basic ' 
        + btoa('C7YHKF91RAABYXNK :JMGYBMAT1X18KA2W '))
      })
        .subscribe(data => {
          Response = data['results'];

但是日志是“奇怪的”:

先是401,然后是200,API没有返回建议返回的内容( png图像)。在Edge上,当我点击submit时,浏览器会询问令牌。我输入凭据,然后服务工作(chrome类似)...Yesterday一切正常,但现在我有这个问题。是API吗?标头设置错误了吗?我有一个用于测试here的现场演示。谢谢你的帮助!

根据@Mudassar的建议进行编辑

代码语言:javascript
复制
onSubmit({ valid }: { valid: boolean }, f: any) {

    if {//
    } 
    else {

      let color = encodeURIComponent(this.params.handwriting_color);
      const url =
        `https://api.handwriting.io/render/png?handwriting_id=${this.params.handwriting_id}&text=${this.params.text}&handwriting_size=${this.params.handwriting_size}&handwriting_color=${color}`;

      //SET HEADERS
      let headers= new HttpHeaders();
      headers.append('Authorization', 'Basic ' + btoa('C7YHKF91RAABYXNK :JMGYBMAT1X18KA2W '))
headers.append("Access-Control-Allow-Origin", "new[] { (string)context.Request.Headers['Origin'] }");
      headers.append("Access-Control-Allow-Headers", "new[] { 'Origin, X-Requested-With, Content-Type, Accept, Authorization' }");
      headers.append("Access-Control-Allow-Methods", "new[] { 'GET, POST, PUT, DELETE, OPTIONS' }");
      headers.append("Access-Control-Allow-Credentials", "new[] { 'true' }");




      //REQUEST
      this.http.get<Response>(url, {
        headers: headers
      })
        .subscribe(data => {
          Response = data['results'];

        }, (err: HttpErrorResponse) => {
          if (err.error instanceof Error) {
            console.log('An error occurred:', err.error.message);
          } else {
            console.log(`Backend returned code ${err.status}, body was: ${err.error}`);
            console.log(Response);
          }
        });
    }

但我还是能拿到401...

EN

回答 1

Stack Overflow用户

发布于 2017-11-01 13:12:38

这可能是因为未设置CORS

代码语言:javascript
复制
Access-Control-Allow-Headers: Authorization

进一步设置此设置应确保正常工作

代码语言:javascript
复制
 headers.append("Access-Control-Allow-Origin", new[] { (string)context.Request.Headers["Origin"] });
 headers.append("Access-Control-Allow-Headers", new[] { "Origin, X-Requested-With, Content-Type, Accept, Authorization" });
 headers.append("Access-Control-Allow-Methods", new[] { "GET, POST, PUT, DELETE, OPTIONS" });
 headers.append("Access-Control-Allow-Credentials", new[] { "true" });

编辑:开始觉得问题可能与服务器端有关,因此建议在服务器端添加以公开Authorization头。"Access-Control-Expose-Headers" : "Authorization"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47037337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档