2015-05-04 146 views
-1

我尝试从离子(angularjs)应用程序访问(获取请求)我的laravel api。 但它不断收到错误。阻止跨源请求 - Laravel

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 

请帮我解决这个

+3

问题显示完全没有任何研究工作。在这个特定错误中的主题不难在网上搜索。你不应该使用SO作为你的第一行调试工具,并且应该首先解决你的问题,并且至少明白他们的意思....尝试谷歌...错误条款会带来很多的结果 – charlietfl

回答

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

你正试图从一个域访问API不同的域。 有很多方法可以解决这个问题,但由于它是一个get请求,使用** jsonp *。

尝试这样的事情

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

       }); 
+0

你不能只是任意地请求jsonp,除非api服务jsonp – charlietfl

+0

是不是吗?不确定配对..我使用jsonp使用回调,并且它在所有情况下工作。任何方式我会考虑它。谢谢反馈虽然。 – Ritesh

相关问题