Laravel PHP 403错误

时间:2016-07-11 10:27:44

标签: php jquery ajax laravel laravel-5

注意:我最终发现问题是由控制器本身的语法错误引起的。

好的,我正在使用Laravel开发平台。 我有一个允许用户注册域名的表单。此表单通过ajax提交到“[my domain] / thedomains / create”。这是代码:

$("#btn_doms_create_submit").click(function (){
    $.ajax({
        type: 'GET',
        url: "/thedomains/create",
        data: { _token : $("input[name=\"_token\"]").val(),
                domain : $("input[name=\"create_dom\"]").val(),
                field_ip : $("input[name=\"create_ip\"]").val(),
                obs : $("textarea[name=\"create_obs\"]").val(),
                active : $("input[name=\"create_active\"]").is(":checked")+"",
                itld : $("input[name=\"create_itld\"]").is(":checked")+"" },
        dataType: 'json',//returned data
        success: function(data){
            if (data["errors"] == "")
            {
                toastr.success(data.message);
                $("#doms_create").modal("hide");
                updateTable();
            }
            else
            {
                var txtError = "";
                for (error in data.errors) {
                    txtError += "<li>" + data.errors[error] + "</li>";
                }
                toastr.warning(data.message + "<ul>" + txtError + "</ul>");

                if (data.errors.domain != null) {
                    $("#div_create_dom").attr("class","form-group has-error");
                }
                if (data.errors.field_ip != null) {
                    $("#div_create_ip").attr("class","form-group has-error");
                }
            }
        }
    });
});

“/ thedomains / create”背后的代码是

public function create(Request $request) {
    $return_val = [ "message" => trans("system.dom_succ", ["name" => $request->dom]),
                    "errors" => "" ];

    $validator = Validator::make($request->all(), [
        "domain" => "required|max:255|url",
        "field_ip" => "max:255"
    ],[
        "domain.required" => trans("system.val_dom_required"),
        "domain.max" => trans("system.val_dom_max"),
        "domain.url" => trans("system.val_dom_url")
    ]);

    if (!$validator->fails()) {
        $dom = new Doms;

        $dom->name = $request->domain;
        $dom->ip = $request->ip;
        $dom->obs = $request->obs;

        if ($request->active == "true")
            $dom->status = true;
        else
            $dom->status = false;

        if ($request->itld == "true")
            $dom->is_top_level_domain = true;
        else
            $dom->is_top_level_domain = false;
    } else {
        $return_val["message"] = trans("system.note_errors");
        $return_val["errors"] = $validator->errors();
    }

    return json_encode($return_val);
}

正如您所看到的,我根据所需的标准验证了所有必需的数据是否存在且有效。 问题是:当我提交此表单时包含一些无效域或根本没有域名时,验证会自然发生,返回给出等等。但是当我有一个有效的域时,验证通过浏览器上的以下错误( chrome)控制台:

  

获取[我的域名] /thedomains/create?_token=2vsOrtkcWGid5Ex2HegtY3Fw2E...aE&domain=http%3A%2F%2Ftecnosece.com&field_ip=&obs=&active=true&itld=false 403(禁止)

Idk为什么会这样。我已经改变了从“域名”到“域名”的路线,认为我的主机可能存在某种阻塞,但这并没有解决问题。 知道发生了什么事吗?

编辑:

根据要求,这是“/ thedomains”的路线部分:

Route::group(['prefix' => 'thedomains'], function () {
    Route::get("/",function () {
        return view("doms");
    });

    Route::get("/all", "DomsController@getAll");

    Route::post("/get", "DomsController@get");

    Route::get("/create", "DomsController@create");

    Route::post("/edit", "DomsController@edit");

    Route::post("/del", "DomsController@del");

    Route::get("/search", "DomsController@search");

    Route::post("/migrate", "DomsController@migrate");
});

0 个答案:

没有答案