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

Angular 2 – 预检的响应具有无效的HTTP状态代码401

发布时间:2020-12-17 06:49:23 所属栏目:安全 来源:网络整理
导读:我知道这里已经有很多相同的问题, 但不幸的是他们都没有帮助我:-(. 这是我的问题:我尝试从我的localhost连接到服务器上的REST服务.它适用于FF REST插件,但我的应用程序导致以下错误: 选项http://…/my_REST_Service/ 401(未经授权) XMLHttpRequest无法加载
我知道这里已经有很多相同的问题,
但不幸的是他们都没有帮助我:-(.
这是我的问题:我尝试从我的localhost连接到服务器上的REST服务.它适用于FF REST插件,但我的应用程序导致以下错误:

>选项http://…/my_REST_Service/ 401(未经授权)
> XMLHttpRequest无法加载http://…/my_REST_Service/.预检的响应具有无效的HTTP状态代码401

我如何尝试获取我想要的数据:

@Injectable()
export class ModelsComponent implements OnInit {

    private restRoot = 'http://.../my_REST_Service';
    private data;

    constructor(private http: Http) { }

    ngOnInit() {
        this.getModels().subscribe(res => {
            this.data = res; 
            console.log(this.data);
        });
    }

    authHeaders() {
        let username: string = 'xxxx';
        let password: string = 'xxxx';

        let token: string = btoa(username + ":" + password);

        let headers: Headers = new Headers();
        headers.append('Access-Control-Expose-Headers','Authorization');
        headers.append('Authorization','Basic ' + token);
        headers.append("Access-Control-Allow-Origin","http://localhost:4200/");
        headers.append("Access-Control-Allow-Methods","*");
        headers.append("Access-Control-Allow-Headers","Accept,Accept-Charset,Accept-Encoding,Accept-Language,Authorization,Connection,Content-Type,Cookie,DNT,Host,Keep-Alive,Origin,Referer,User-Agent,X-CSRF-Token,X-Requested-With");
        headers.append("Access-Control-Allow-Credentials","true");

        return headers;
    }

    getModels(): Observable<any> {
        return this.http.get(this.restRoot,{
                    headers: this.authHeaders(),withCredentials: true        <- from a similar issue
               }).map(res => res.json());
    }
}

我的服务器配置如下:

Header set Access-Control-Allow-Origin "http://localhost:4200"
Header set Access-Control-Allow-Headers "Accept,X-Requested-With"
Header set Access-Control-Allow-Methods "*"
Header set Access-Control-Allow-Credentials "true"   
Header set Access-Control-Expose-Headers "Authorization"       <- from a similar issue

我知道还有其他相同/类似的问题.但我仍然不知道该做什么或怎么做.
如果有人可以帮我解决我的代码,我真的很感激!

解决方法

“我的服务器配置如此” – 这大多是无关紧要的.查看错误消息:“预检的响应具有无效的HTTP状态代码401”

它没有说明你在Access-Control-Allow-Thing中提到的任何事情.

>浏览器正在发出OPTIONS请求,询问是否允许跨源请求.
>回复显示“您的用户名和密码错误”.

由于浏览器未收到发出交叉原始请求的权限:它尚未发送用户名和密码.

您需要在服务器上找到执行授权的代码,并从该测试中排除OPTIONS请求.任何人都应该能够提出OPTIONS请求,而不仅仅是拥有用户名和密码的人.

(编辑:李大同)

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

    推荐文章
      热点阅读