跨源请求被阻止 - Laravel

时间:2015-05-04 12:04:52

标签: angularjs laravel-4 ionic-framework

我试图从离子(angularjs)app访问(获取请求)我的laravel api。 但它不断出现波纹错误。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://128.xxx.xxx.xx/mobi/check/?username=achchu&apikey=1N7GyYRfq8bQnrFCCGgL

请帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

此响应基于以下事实:您似乎可以控制服务端代码。 您是否在响应中添加了CORS支持?如果你还没有这样做,可能就是这样。

您可以添加处理程序:

Route::head("/<path to resource>", function () {
    $r = Response::make("hello");
    //Access-Control-Allow-Origin: http://api.bob.com
    // Access-Control-Allow-Credentials: true
    $r->header("Access-Control-Allow-Origin", "<*|client request domain>")
    ->("Access-Control-Allow-Credentials", "true")
    ->("Access-Control-Request-Method", "GET");

});

也许您可以在发送自己的响应上设置此标头,我不确定。如果可以,你可以在几条路线上使用这种东西,最好把它作为过滤器来准备。您可以在http://www.html5rocks.com/en/tutorials/cors/了解有关CORS的更多信息。

如果你要发送的是json数据,请考虑提供支持jsonp的响应。你可以这样做:

   $normalData = Model::all();

   // if the client made a jsonp style request
   if (Input::has("callback")) {
        $data = "<script>" . Input::get("callback") . "(" . json_encode($normalData) . ")";
       return Response::make($data)->header("Content-Type", "appplication/javascript");
   }else {
       //if not then return normally
       return Response::json($normalData);
   }

答案 1 :(得分:-1)

您正尝试从一个域访问api到另一个域。 有很多方法可以解决这个问题,但由于它是一个获取请求,请使用** jsonp *。

尝试这样的事情

   var url = ' http://128.xxx.xxx.xx/mobi/check/?username=achchu&apikey=1N7GyYRfq8bQnrFCCGgL&callback=JSON_CALLBACK';
                $http.jsonp(url)
                .success(function(data) {

                });