简体   繁体   English

Angular 4 http post 请求在 url 中显示数据

[英]Angular 4 http post request shows data in the url

I try to create a login control in typescript.我尝试在打字稿中创建一个登录控件。 When i try to send data it's shown in url like get method.当我尝试发送数据时,它会像 get 方法一样显示在 url 中。

Here's typescript code;这是打字稿代码;

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);
}

And here's c# method这是 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);
    }
}

When i go like this in the Chrome's network panel Login url is like http://localhost/AngularProject/Ajax/Home/Login?login=%7B%22Username%22:%22blahblah%22,%22Password%22:%22blahblah%22%7D当我在 Chrome 的网络面板中这样做时,登录 url 就像http://localhost/AngularProject/Ajax/Home/Login?login=%7B%22Username%22:%22blahblah%22,%22Password%22:%22blahblah% 22%7D

If i use HttpPost attribute it doesn't work.如果我使用 HttpPost 属性,则它不起作用。 It gives an error like Http 404 Not found error for the method.它给出了一个错误,如该方法的 Http 404 Not found 错误。

I just try to hide the data from url.我只是尝试从 url 中隐藏数据。 I'm new in the Angular so i'm waiting for your answers.我是 Angular 的新手,所以我在等你的答案。

Can you please try something like this.你能不能试试这样的事情。 Angular example:角度示例:

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

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

} }

C# example: C# 示例:

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

尝试删除此行

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

这里一样设置代理配置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM