Angular 4 http发布请求显示了网址中的数据

时间:2019-04-15 11:48:35

标签: ajax angular typescript post model-view-controller

我尝试在打字稿中创建一个登录控件。当我尝试发送数据时,它会像get方法一样显示在url中。

这里是打字稿代码;

AdminLogin(login: any) {
    let loginJson = JSON.stringify({ login });
    let headers = new Headers({ "Content-Type": "application/json" });
    let options = new RequestOptions({ headers: headers });

    return this.http.post(this.linkAdminLogin, loginJson, options)
        .map((response: Response) => response.json())
        .catch(this._errorHandler);
}

这是c#方法

[HttpGet]
public JsonResult Login(string login)
{
    UserJson user = JsonConvert.DeserializeObject<UserJson>(login);

    string pass = user.Password.ToMD5();

    var rb = entity.Users.Where(a => a.Active == true && a.Username == user.Username && a.Password == pass).FirstOrDefault();

    if (rb != null)
    {
        Session["CurrentUser"] = rb;

        return Json(true, JsonRequestBehavior.AllowGet);
    }
    else
    {
        return Json(false, JsonRequestBehavior.AllowGet);
    }
}

当我在Chrome的网络面板中这样操作时,登录网址就像http://localhost/AngularProject/Ajax/Home/Login?login=%7B%22Username%22:%22blahblah%22,%22Password%22:%22blahblah%22%7D

如果我使用HttpPost属性,它将不起作用。该方法会给出类似Http 404 Not found错误的错误。

我只是尝试从url隐藏数据。我是Angular的新手,所以我在等待您的答案。

3 个答案:

答案 0 :(得分:1)

可以请您尝试这样的事情。 角度示例:

AdminLogin$(request: RequestModel): Observable<responseModel | type> {
  const url = '<url to api>';

  return this.http.post<responseModel | type>(url, {request})
    .pipe(catchError(this.errorHandler));

}

C#示例:

[HttpPost]
public IActionResult Login([FromBody] RequestModel request)
{
  // your code
  return Ok();
}

答案 1 :(得分:0)

尝试删除此行

   let loginJson = JSON.stringify({ login });

答案 2 :(得分:0)

设置here之类的代理配置。