0

我尝试通过他们的 Rest Api 从 redmine 获取问题。当我从邮递员那里调用它时,我得到了响应,但是当我从我的角度应用程序中调用它时,我得到了这样的错误

选项https://redmine.ourDomain.net/issues.json 404(未找到) XMLHttpRequest 无法加载https://redmine.ourDomain.net/issues.json。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:3000 ”。响应具有 HTTP 状态代码 404。

这是我在 Angular 中的做法

login(user: User): Observable<boolean> {
    var headers: Headers = new Headers();
    headers.append("Authorization", "Basic " + btoa(user.login + ":" + user.password));
    let options = new RequestOptions({ headers: headers });
    return this.http.get("https://redmine.ourDomain.net/issues.json", options)
        .map((response: Response) => {
            debugger;
            if (response.status == 200) {
                // set token property

                // store username and jwt token in local storage to keep user logged in between page refreshes
                localStorage.setItem('currentUser', JSON.stringify({ user }));

                // return true to indicate successful login
                return true;
            } else {
                // return false to indicate failed login
                return false;
            }
        });
}

还有请求在我的浏览器中的外观 在此处输入图像描述

4

2 回答 2

1

必须在后端设置 CORS。请注意,允许所有来源 Access-Control-Allow-Origin: '*' 并不是一个好习惯,您还需要指定其他标头:

Access-Control-Allow-Methods:GET,OPTIONS Access-Control-Allow-Headers:授权。

于 2017-05-30T12:19:55.390 回答
1

您需要在后端启用 CORS 访问:http ://www.redmine.org/plugins/redmine_cors

这是一个不错的扩展,可以让您在正常的 CORS 限制之外测试前端代码。它严格用于测试,不会帮助生产应用程序,但很高兴拥有:https ://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

于 2017-05-15T21:47:41.383 回答