2015-05-04 147 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

相關問題