【发布时间】:2015-12-21 18:11:28
【问题描述】:
我正在使用 angularjs 创建一个新项目,我的前端工作几乎完成了。
我计划让 laravel php 与我的数据进行交互,并将其仅用于获取数据、邮件等基本操作。
这是我的问题。
我计划使用一个子域 db.mydomain.com,其中加载了 laravel,并且 api 在 angularjs 中引用了 $http 调用。这是一个好习惯吗?
如果是,我如何使用 laravel 启用 cors 请求。
如何确认 $http 请求仅来自我的网站。我假设我们也可以通过邮递员来实现,并且使用邮递员,用户可以复制粘贴数据。如何确认 laravel 主路由仅适用于我的网站应用程序的基本 url。
希望我是清楚的。
编辑 1 按照说明完成后,我能够拨打 cors 电话。但是如果我使用模型从数据库中收集数据,它会再次抛出 cors 错误。
<?php
namespace App\Http\Controllers;
use App\Task;
class TechnologiesController extends Controller {
public function index()
{
$technologies = Task::getAll("technologies"); // not working if dont have header in task.php
//$technologies = array("subjects"=>array()); // working. This is without interacting with database.
$encodedArray = json_encode($technologies);
echo $encodedArray;
}
}
task.php
use Illuminate\Database\Eloquent\Model;
use DB;
header("Access-Control-Allow-Origin: *"); //using this line solves the cors problem.But i want it to center accesssed
class Task extends Model {
public static function getAll($tableName){
return DB::table($tableName)->get();
}
}
注意:我曾经使用 laravel 4 并失去了联系。现在我无法理解模型文件到底应该写在哪里。
【问题讨论】:
-
这是我用于 CORS 的包。我认为它运作良好github.com/barryvdh/laravel-cors
-
@jfadich 我已经更新了代码。能否请您告知为什么我的 cors 在与 db 连接时没有集中化。
-
尝试用
return $encodedArray替换echo $encodedArrayLaravel 使用请求包装器,这意味着您不应该从控制器回显数据,而是始终返回它。通过返回它,laravel 可以使用中间件添加标题。回声将绕过它。 -
它适用于 return。
-
@jfadich 请帮我解决这个问题。我是stackoverflow.com/questions/34487807/…