CORS 问题 Angular4 & c# web api
Posted
技术标签:
【中文标题】CORS 问题 Angular4 & c# web api【英文标题】:CORS issue Angular4 & c# web api 【发布时间】:2019-01-03 09:05:21 【问题描述】:我有一个在 http://localhost:59543/ 上运行的 Web API,为此我已通过将以下内容添加到 Web.config 来启用 CORS
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
我有一个在 http://localhost:4200/ 上运行的 angular 4 项目。我使用以下代码发出 HTTP 请求
登录服务
@Injectable()
export class LoginService extends BaseService
request: Http;
constructor(request: Http)
super(request);
this.request = request;
postLogin(body: Object): Observable<any>
var options = this.options;
options.method = "POST";
return this.request.post(AppSettings.apiURL + "api/Login", body, options)
.map(this.extractData)
.catch(this.handleError);
基础服务
@Injectable()
export class BaseService
headers: Headers;
options: RequestOptions;
constructor(private http: Http)
this.headers = new Headers();
let token: string = localStorage.getItem("TOKEN");
if (token != undefined)
this.headers.append("AUTH_TOKEN", token);
this.options = new RequestOptions( headers: this.headers );
public extractData(res: Response)
let body = res.json();
return body || ;
public handleError(error: Response | any)
return Observable.throw(error.message || error);
问题
当我为 HTTP 请求设置标头时
this.headers.append("AUTH_TOKEN", token);
我收到以下错误
api/Login: 1 加载资源失败:服务器响应 405 状态(方法不允许)
:4200/#/login:1 加载失败http://localhost:59543/api/Login: 预检响应包含无效的 HTTP 状态代码 405。
但是当我删除标题时它可以工作。任何建议或指导将不胜感激。
【问题讨论】:
405 表示您没有授权您的 HTTP 动词。否则,您没有授权 API 上的 POST 请求。 由于这不是 Angular 问题,我将删除该标签,因为您编写的任何 Angular 代码都无法解决此问题。 我认为当我从请求中删除标头时,请求工作时,角度代码可能存在问题。 @trichetriche 如您所见,请求进展顺利,您的服务器正在回答错误。如果删除标头使其工作,则意味着您的服务器配置错误,因为无论哪种方式,Angular 都完成了它的工作。 感谢您为我指明了正确的方向,关于在哪里查看服务器有什么建议吗? @trichetriche 【参考方案1】:你应该传递令牌类型的令牌,例如,
this.headers.append("Authorization", "bearer "+token);
这里,bearer 是您的令牌类型。这将是您设置的另一个默认值。
【讨论】:
以上是关于CORS 问题 Angular4 & c# web api的主要内容,如果未能解决你的问题,请参考以下文章
从 Angular4 调用 Spring Rest 服务时的 CORS(跨源问题)
带有 PHP Api CORS 请求问题的 Angular4 应用程序
Angular4 ASP.NET Core 1.2 Windows Authentication CORS for PUT 和 POST 给出 401
net.core 和 angular4 应用程序的 Cors 问题 - 适用于 azurewebsites.net 域而不是自定义