我尝试在typescript中创建一个login控件。当我尝试发送数据时,它会像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的网络面板时,登录url类似于http://localhost/AngularProject/Ajax/Home/Login?login=%7B%22Username%22:%22blahblah%22,%22Password%22:%22blahblah%22%7D
如果我使用HttpPost属性,它不能工作。它给出了一个错误,如Http 404未找到该方法的错误。
我只是试着从url中隐藏数据。我是个新手,所以我在等你的回答。
发布于 2019-04-15 21:16:40
你能不能试一下这样的东西。Angular示例:
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();
}发布于 2019-04-15 19:53:49
尝试删除此行
let loginJson = JSON.stringify({ login });发布于 2019-04-15 21:29:04
设置代理配置,如here。
https://stackoverflow.com/questions/55688532
复制相似问题