【发布时间】:2019-05-15 20:11:59
【问题描述】:
我正在尝试向我的 API 发出 HTTP GET 请求,它返回 OPTIONS 405 (Method Not Allowed) 和
从源访问“apiurl”处的 XMLHttpRequest “http://localhost:4200”已被 CORS 策略阻止:响应 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。
下面是我的代码:
const header = new HttpHeaders();
const request_header = header.append('Authorization', this.token.toString());
console.log(request_header.get('Authorization'));
this.urlList = buildUrl('myurl/', {path: 'mypath'});
return this.http.get(this.urlList,{headers: request_header} );
我尝试在 Postman、C# 控制台应用程序和 ASP.NET WebForms 中做同样的事情,它运行良好,但在 Angular 中我得到了上面提到的错误。我也在 TypeScript 中对我的登录有一个 HTTP GET 请求,它完美运行。
**注意:我无法访问后端,但基于 C# 和 Postman 可以正常工作。
更新: 谢谢你们,只是为了让你们知道我最终使用 Flask 和 angular 来提出请求,它很棒。
【问题讨论】:
-
这与角度无关,这是拨打电话时的身份验证问题。您应该尝试确保您通过服务所需的正确请求标头的身份验证令牌或 cookie 值。
-
我已经尝试过一千种不同的方法和组合,但似乎没有一个有效。在 Angular 中是否有不同的请求方式?
-
你见过this answer about headers being immutable?一年前我也遇到过类似的问题。
-
我通常这样做:
httpOptions: any = { headers: new HttpHeaders({ Authorization:' my_key_for_authentication' }) };在服务中,我获取标头并在发出请求时传递给 HttpClient:const headers = this.httpOptions.headers; return this.httpClient .get(${this.baseUrl}/muurl, { headers, params })
标签: angular typescript api http cors