我创建了一个简单的Backbone脚本,它依赖于使用laravel RESTful功能创建的简单api。包含Backbone脚本的html驻留在我的桌面和我的xampp localhost上的服务器api。
在Laravel上:
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
$task = Task::find($id);
return $task;
}
on Backbone:
(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对象,但是当我尝试运行Backbone脚本时,我在开发控制台中收到此错误:
> 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 :(得分:0)
也许有人需要这个!
感谢TonyArra,我找到了答案:
由于服务器和请求脚本位于2个不同的域上,因此解决方案是:
在服务器上添加它(使用laravel我在restful controller的构造函数中添加了此代码):
$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");