2014-02-28 25 views
0

我創建了一個簡單的骨幹腳本,這依賴於一個簡單的api創建與laravel RESTful功能。包含Backbone腳本的html駐留在我的桌面和我的xampp本地主機上的服務器api上。骨幹與laravel作爲一個api不返回錯誤

上Laravel:

/** 
* Display the specified resource. 
* 
* @param int $id 
* @return Response 
*/ 
public function show($id) 
{ 
    $task = Task::find($id); 

      return $task; 
} 

的骨幹:

(function(){ 

App = { 

    Models : {}, 

    Views : {}, 

    Collections : {} 

}; 

App.Models.Task = Backbone.Model.extend({ 

    defaults : {title : '', active : 0}, 

    urlRoot : 'http://localhost/api/public/tasks' 

}); 

    var task = new App.Models.Task({id : 1}); 

    task.fetch(); 

    //task.set({title : 'new tite', active : 1}); 

    //task.save(); 

})(); 

服務器側縫是好的,在測試的原因返回正確的json對象,但是當我嘗試運行骨幹腳本我在開發控制檯得到這個錯誤:

> XMLHttpRequest cannot load http://localhost/api/public/tasks/1. No 
> 'Access-Control-Allow-Origin' header is present on the requested 
> resource. Origin 'null' is therefore not allowed access 

。 有什麼問題?

+0

聽起來像是你有兩個d不同的域名,一個用於骨幹頁面,另一個用於laravel api。你可以確保它們在同一個域上運行,或者[請參閱設置原始頭文件的這個問題](http://stackoverflow.com/questions/1653308)。 – bejonbee

回答

0

也許有人會需要這個!

感謝對TonyArra我找到了答案:

  • 由於服務器和請求腳本是在這裏2個不同的領域是解決方案:

  • 在服務器上添加此(使用laravel我加入在寧靜的控制器的構造函數的代碼):

     $http_origin = $_SERVER['HTTP_ORIGIN']; 
    
         //if you trust origin set header else verify source 
    
         //if ($http_origin == "http://www.domain1.com") 
    
         header("Access-Control-Allow-Origin: $http_origin");