Angular 角形5柱不工作

Angular 角形5柱不工作,angular,Angular,我已经在angular 5中创建了应用程序。我正在使用头调用api,它不会在浏览器中添加头。它将在标题中显示选项,而不是它。403答复。我已经在我的服务中启用了CORS。当我在没有标题的情况下调用此帖子时,效果很好。请告诉我问题出在哪里 var headerOptions = new Headers(); headerOptions.append('Content-Type', 'application/json'); headerOptions.app

我已经在angular 5中创建了应用程序。我正在使用头调用api,它不会在浏览器中添加头。它将在标题中显示选项,而不是它。403答复。我已经在我的服务中启用了CORS。当我在没有标题的情况下调用此帖子时,效果很好。请告诉我问题出在哪里

 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"