我有一个运行在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请求
LoginService
@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 /登录:1加载资源失败:服务器响应 状态405(不允许使用方法)
:4200 /#/ login:1无法加载http://localhost:59543/api/Login: 飞行前响应的HTTP状态码为405。
但是当我删除标题时,它可以工作。任何建议或指导将不胜枚举。
答案 0 :(得分:0)
您应传递令牌类型为
的令牌this.headers.append("Authorization", "bearer "+token);
在这里,不记名是您的令牌类型。您将默认设置为另一个。