Angular 角形5柱不工作
我已经在angular 5中创建了应用程序。我正在使用头调用api,它不会在浏览器中添加头。它将在标题中显示选项,而不是它。403答复。我已经在我的服务中启用了CORS。当我在没有标题的情况下调用此帖子时,效果很好。请告诉我问题出在哪里Angular 角形5柱不工作,angular,Angular,我已经在angular 5中创建了应用程序。我正在使用头调用api,它不会在浏览器中添加头。它将在标题中显示选项,而不是它。403答复。我已经在我的服务中启用了CORS。当我在没有标题的情况下调用此帖子时,效果很好。请告诉我问题出在哪里 var headerOptions = new Headers(); headerOptions.append('Content-Type', 'application/json'); headerOptions.app
var headerOptions = new Headers();
headerOptions.append('Content-Type', 'application/json');
headerOptions.append('Auth-Token', '12345');
var requestOptions = new RequestOptions({ method: RequestMethod.Post, headers: headerOptions });
return this.http.post("mydomain.com/api/getdata", null, requestOptions)
.map((data: Response) => { return data.json() })
.toPromise().then(x => {
}).catch(e => {
console.log(e);
});
}
我建议您使用httpclient而不是http。在这里,我创建了一个服务,在这里,我调用了带有头的api,看看我的代码,它工作得很好
login(logins: Login): Observable<LoginApiResponse> {
const url = 'http://localhost:54708/Account/LoginAPI';
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'my-auth-token',
'cookies': '.AspNetCore.Identity.Application=ttwetwtwe'
})};
return this._httpClient.post(url, logins, httpOptions)
.pipe(map((myResponse => <LoginApiResponse> myResponse)));
}
希望这能奏效!!!!
谢谢,不要定义两次请求方法,就这样做吧
导出类AppComponent{
构造函数(专用http:http){
}
createAuthorizationHeader(标题:标题){
headers.append('Authorization','Basic'+
btoa('a20e6aca-ee83-44bc-8033-b41f3078c2b6:c199f9c8-0548-4be79655-7ef7d7bf9d20');
}
executeHttp(){
var headers=新的headers();
此.createAuthorizationHeader(标题);
headers.append('Content-Type','application/json');
var content=JSON.stringify({
名字:“我的名字”
});
返回this.http.post(
'https://angular2.apispark.net/v1/companies/",内容,{
标题:标题
}).map(res=>res.json()).subscribe(
data=>{console.log(data);},
err=>{console.log(err);}
);
}
}
返回一个包含200个请求方法选项状态代码的响应
浏览器会检查服务器是否允许请求方法。收到200后,浏览器将发送您的实际请求
如果您使用的是PHP:
您可以在API/后端逻辑中拦截请求
您可以在laravel中构建中间件,或者只需检查控制器中的请求方法发送成功响应,然后在htaccess中添加以下内容:
<IfModule mod_headers.c>
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With, WU-Api-Key, WU-Api-Secret"
标题始终设置访问控制允许原点“*”
标题始终设置访问控制允许方法“获取、发布、放置、修补、删除、选项”
Header always set Access Control Allow Header“缓存控制、Pragma、来源、授权、内容类型、X-Requested-With、WU Api密钥、WU Api机密”
我还有403个this.http.post(url,null)
在tomcat CorsFilter上启用了CORS
同样的请求this.http.post(url,null)
和一个干净的tomcat运行良好
使用this.http.post(url,{})
将“Content-Type:application/json”添加到请求中,然后使用CorsFilter向tomcat发出的请求对我有效
requestOptions可能会被某些HttpInterceptor覆盖。您是否尝试过将表单或对象ind清空而不是null。您是否提到了令牌类型???还是在你的情况下无效?仍然有相同的问题。我的错误API中有一些问题。仍然是相同的问题。我在postman中使用了api,它工作得很好,但是从添加请求的角度来看:选项状态代码:400错误请求
public function handlePreflightRequests(MvcEvent $event) {
if ($event->getRequest()->getMethod() == 'OPTIONS') {
$response = $event->getResponse();
$response->setStatusCode(200);
$response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
$view = new JsonModel(array('status' => 'success', 'message' => 'Checkpost passed'));
$response->setContent($view->serialize());
return $response;
}
}
<IfModule mod_headers.c>
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With, WU-Api-Key, WU-Api-Secret"