使用JSON标头时,Access-Control-Allow-Headers不允许使用

时间:2016-07-26 19:39:49

标签: apache angular

尝试从angular 2应用程序向我的Laravel API发送帖子请求。

我的方法:

getCombinas(test)
   {
       this.loadedResult = false;
       let body = JSON.stringify({
                test: test,
        });
    this.http.request('testAPI', { body:body, method:'POST' })
      .map((res:Response) => res.json())
      .subscribe(
        data => {
            console.log(data);
        },
        error => {
          console.log(error.text());
        }
      );
   }

在我的httpd.conf(apache配置)中,我允许使用cors:

Header set Access-Control-Allow-Origin "*"

我在我的angular 2应用程序中使用了自定义请求选项类:

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs, Headers} from '@angular/http';

export class CustomRequestOptions extends BaseRequestOptions {

     merge(options?:RequestOptionsArgs):RequestOptions {
    options.url = 'MY_API_URL/api/' + options.url;
    if (options.method === 1) {
    let headers = new Headers();
    headers['Content-Type'] = 'application/json';
    headers.append('Content-Type', 'application/json');
    options.headers = headers;
         }
    return super.merge(options);
  }

}

只有在我添加了这两行之后才会出现错误:

headers['Content-Type'] = 'application/json';
headers.append('Content-Type', 'application/json');

但是如果没有它们,我的Laravel会得到文本/简单的响应而我无法使用它。我需要JSON响应。

出了什么问题?

2 个答案:

答案 0 :(得分:0)

如果缺少,则必须使用命令

启用apache mod_header
a2enmod headers

然后重启apache

答案 1 :(得分:0)

看起来您应该另外将 Access-Control-Allow-Headers 标头写入必要的响应值。