gpt4 book ai didi

spring - 在 Angular 5 中发布 form-urlencoded

转载 作者:太空狗 更新时间:2023-10-29 17:39:09 26 4
gpt4 key购买 nike

我正在尝试使用 Spring 后端和 Angular 5 前端开发应用程序。对于登录,我使用的是 Spring Security,在前端,我试图将登录数据发布为 x-www-form-urlencoded。但是,后端收到的用户名和密码均为空。 HttpClient 的 Angular 5 文档仅提供用于发布 json 数据的示例,并且 Http 已弃用。

如有任何关于如何解决此问题的建议,我们将不胜感激。

这是我的 Angular 代码:

constructor(public httpClient: HttpClient) {
console.log('Hello RestService Provider');
}

login(username: string, password: string) {
var body = 'username=' + username + '&password=' + password + "&remember-me=" + false;
var headers = new HttpHeaders();
headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
let options = {headers: headers, withCredentials: true};
this.callPostWithOptions("login", body, options).then(data=>{
this.getCurrentUser();
});
}

callPostWithOptions(address, body, options) {
return new Promise(resolve => {
address = this._SERVER_HOST + ":" + this._SERVER_PORT + "/" + address;
this.httpClient.post(address, body, options)
.subscribe((data) => {
resolve(data);
},
(err) => {
console.log("error during POST", err)
});
});
}

和服务器端点:

@RequestMapping(value = "/login", method = RequestMethod.GET)
@CrossOrigin(origins = "*")
public ModelAndView handle() {
return new ModelAndView("/app/userOverview");
}

编辑:我忘了说,当我用 Postman 测试它时它没有问题

最佳答案

新的 HTTPClient 模块只适用于不可变类型。这意味着无法修改 header 和参数。 append() 操作实际上返回原始副本,其中添加了 header 。

let headers = new HttpHeaders();
headers.append('...','...');// <- doesn't change the original object, but creates a new one!

相反,您想捕获返回的对象:

let headers = new HttpHeaders();
headers = headers.append('...','...');

作为旁注,我将更改 callPostWithOptions 以使用 toPromise() operator :

callPostWithOptions(address, body, options) {
address = '...';
return this.httpClient.post(address, body, options).toPromise();
}

关于spring - 在 Angular 5 中发布 form-urlencoded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47333774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com