Laravel 代码在本地主机上工作,但在服务器上失败


Laravel Code working on the Localhost but Fail on the server

我有一个简单的Ajax Jquery函数,它发布编辑后的文章数据,然后将其路由到控制器


//Controller articleManagement
    function editArticle(){
        $a=$this->inputs;
        $response=DB::table('articles')
            ->where('id', $a["id"])
            ->update(array($a["column"] => $a["val"]));
        return $response;
    }

//routes.php
Route::post('/xarticle', "articleManagement@editArticle");

//ajax Jquery
           $.ajax({
                type: "POST",
                url: "/xarticle",
                data: {
                    id:id,
                    val:eval("CKEDITOR.instances.content"+id+".getData()"),
                    column:"content"
                },
                success:function(data){
                    data=Number(data);
                    Boolean(data)?alertify.success("Data successfully updated."):alertify.error("Nothing was updated.");
                }
            });

当我在本地主机中使用各种val时,上面的代码可以完美运行。但是在远程服务器上的生产中,它以较小的值工作,例如"Hello World"bla bla bla bla bla",但是当我想发布文章并返回 404 未找到页面错误时,它会失败。

此错误显示在拉拉维尔中.log

[2014-12-26 23:20:07] production.ERROR: exception 'Symfony'Component'HttpKernel'Exception'NotFoundHttpException' 
Stack trace:
#0 /home/yahyouha/html/bootstrap/compiled.php(3238): Illuminate'Foundation'Application->abort(404)
#1 /home/yahyouha/html/app/routes.php(53): Illuminate'Support'Facades'Facade::__callStatic('abort', Array)
#2 /home/yahyouha/html/app/routes.php(53): Illuminate'Support'Facades'App::abort(404)
#3 [internal function]: {closure}('xarticle')
#4 /home/yahyouha/html/bootstrap/compiled.php(5331): call_user_func_array(Object(Closure), Array)
#5 /home/yahyouha/html/bootstrap/compiled.php(4998): Illuminate'Routing'Route->run(Object(Illuminate'Http'Request))
#6 /home/yahyouha/html/bootstrap/compiled.php(4986): Illuminate'Routing'Router->dispatchToRoute(Object(Illuminate'Http'Request))
#7 /home/yahyouha/html/bootstrap/compiled.php(715): Illuminate'Routing'Router->dispatch(Object(Illuminate'Http'Request))
#8 /home/yahyouha/html/bootstrap/compiled.php(696): Illuminate'Foundation'Application->dispatch(Object(Illuminate'Http'Request))
#9 /home/yahyouha/html/bootstrap/compiled.php(7746): Illuminate'Foundation'Application->handle(Object(Illuminate'Http'Request), 1, true)
#10 /home/yahyouha/html/bootstrap/compiled.php(8353): Illuminate'Session'Middleware->handle(Object(Illuminate'Http'Request), 1, true)
#11 /home/yahyouha/html/bootstrap/compiled.php(8300): Illuminate'Cookie'Queue->handle(Object(Illuminate'Http'Request), 1, true)
#12 /home/yahyouha/html/bootstrap/compiled.php(10962): Illuminate'Cookie'Guard->handle(Object(Illuminate'Http'Request), 1, true)
#13 /home/yahyouha/html/bootstrap/compiled.php(657): Stack'StackedHttpKernel->handle(Object(Illuminate'Http'Request))
#14 /home/yahyouha/public_html/index.php(49): Illuminate'Foundation'Application->run()
#15 {main} [] []

编辑

我注意到如果我删除图像代码和其他一些字符,它就会开始工作,可能是 apache 中的一些配置不接受发布的特殊字符以防止注入?

我认为您是正确的,服务器正在过滤包含 HTML 的 POST 正文,可能使用mod_security规则。 您可以通过对 HTML 片段进行编码来解决此问题

val: encodeURIComponent(htmlFragment)
在PHP

中,您必须对其进行解码(但也许PHP会自动为您执行此操作)

urldecode($a["val"])

http://php.net/manual/en/function.urldecode.phphttp://www.w3schools.com/jsref/jsref_encodeuricomponent.asp