CORS - 流明和角度请求

时间:2017-11-29 00:50:22

标签: angular cors lumen

我有一个运行在http://localhost:4200的Angular应用和一个运行在http://localhost:8000的流明API。

我使用barryvdh / laravel-cors并且我的所有POSTS请求都返回" No' Access-Control-Allow-Origin'标头出现在请求的资源上。"

有关于此的任何线索?我的Angular数据库服务:

@Injectable()
export class DatabaseService {

  constructor(private http: Http) { }

  get(url: string) {
    return this.http.get("http://localhost:8000/" + url)
      .map(response => response.json());
  }

  post(url: string, data) {
    return this.http.post("http://localhost:8000/"+ url, data)
      .map(response => response.json());
  }

}

所有GET请求都能正常运行。

3 个答案:

答案 0 :(得分:1)

启用apache mod_headers将解决此问题。 在命令下运行

  1. a2enmod标头
  2. sudo服务apache2重新启动

答案 1 :(得分:0)

这取决于您传递的数据以及您在后端处理的方式。你尝试过字符串数据

吗?
JSON.stringify(data)

post(url: string, data) {
return this.http.post("http://localhost:8000/"+ url, JSON.stringify(data))
  .map(response => response.json());
}

答案 2 :(得分:0)

您需要授予对Lumen上Angular服务器的访问权限

如果您不使用CORS,只需在/bootstrap/app.php上添加此行

header('Access-Control-Allow-Origin: http://localhost:4200/');

或针对所有人:

header('Access-Control-Allow-Origin: *');

如果使用的是CORS,则必须在App \ Http \ Middleware \ CorsMiddleware(或任何称为CORS文件的文件)的标头上设置相同的内容

$headers = [
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Methods'     => 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Max-Age'           => '86400',
            'Access-Control-Allow-Headers'     => 'Content-Type, Authorization, X-Requested-With'
        ];