Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Cors带Laravel 4和Angularjs_Php_Angularjs_Laravel 4_Cors - Fatal编程技术网

Php Cors带Laravel 4和Angularjs

Php Cors带Laravel 4和Angularjs,php,angularjs,laravel-4,cors,Php,Angularjs,Laravel 4,Cors,这可能是一件简单而明显的事情,但我看不出问题出在哪里。经过一些研究,我发现为了在laravel 4中启用CORS,oen应该在filters.php中添加以下内容: App::before(function($request) { if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { $statusCode = 204; $headers = [ 'Access-Co

这可能是一件简单而明显的事情,但我看不出问题出在哪里。经过一些研究,我发现为了在laravel 4中启用CORS,oen应该在filters.php中添加以下内容:

App::before(function($request)
{
    if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
            $statusCode = 204;

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

            return Response::make(null, $statusCode, $headers);
        }
});


App::after(function($request, $response)
{
    $response->headers->set('Access-Control-Allow-Origin', '*');
        $response->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
        $response->headers->set('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Requested-With');
        $response->headers->set('Access-Control-Allow-Credentials', 'true');
        return $response;
});
所以在我看来,当一个人在angularjs中这样做的时候:

app.factory('RestFactory', function ($http) {
  var BASE_URL = 'url_to_the_site';
  return {
    get: function (target) {
      return $http({method: 'GET', url: BASE_URL + target});
    },
    post: function (target, data) {
      return $http.post(BASE_URL + target, data);
    }
  };
});
它应该正常工作?在localhost:8000的开发模式下运行Laravel4时,它似乎可以工作。但是,当我将Laravel传输到我的站点并尝试访问站点url时,我得到的是:

请求的资源上不存在“Access Control Allow Origin”标头


那么我做错了什么?它在本地工作,当使用浏览器访问URL时,基本URL也可以工作,所以我这里缺少什么?

这方面运气好吗?或多或少遇到了相同的问题。另外,为什么您需要在
:before
::after
部分中设置标题?我认为这是因为第一个前端要求提供选项,然后发送实际数据,所以还必须为附加信息启用CORS。至于我有没有运气。。。好吧,我已经有一段时间没有在服务器环境中再次发布了,但是如果我的php代码中有一个输入错误,那么调用将返回类似的错误。实际上,我让它像上面一样跨域工作,我想我只是第一次有一个输入错误。此外,我还没有意识到302响应应该只包含标题。