Javascript 如何使用http从@angular/http发送post请求

Javascript 如何使用http从@angular/http发送post请求,javascript,angular,http,post,http-headers,Javascript,Angular,Http,Post,Http Headers,我使用以下代码发送post请求 import{Http,Headers,Response}来自'@angular/Http'; @可注射() 导出类身份验证服务{ private _options=新标题({'Content-Type':'application/json'}); 构造函数(私有http:http){} 登录(用户名:string,密码:string){ 返回此.http.post('http://localhost:56451/map', {“用户名”:用户名,“密码”:密码

我使用以下代码发送post请求

import{Http,Headers,Response}来自'@angular/Http';
@可注射()
导出类身份验证服务{
private _options=新标题({'Content-Type':'application/json'});
构造函数(私有http:http){}
登录(用户名:string,密码:string){
返回此.http.post('http://localhost:56451/map',
{“用户名”:用户名,“密码”:密码},
这是(u选项),;
}

}
您正在混合类:
HttpHeaders
HttpClient
一起使用,它取代了4.3版以来的
Http

关于403的其他评论值得调查,但至少要这样做:

从“@angular/common/http”导入{HttpClient,HttpHeaders};
从“rxjs/Observable”导入{Observable};
导入“rxjs/add/operator/map”
@可注射()
导出类身份验证服务{
private _options={headers:newhttpheaders({'Content-Type':'application/json'})};
//注入HttpClient,而不是Http
构造函数(私有http:HttpClient){}
登录(用户名:string,密码:string){
返回此.http.post('http://localhost:56451/map',
{用户名,密码},
这是(u选项),;
}
}

请注意,您可以在帖子正文中使用a(当您的对象键名称与您要替换的变量名称相同时)。

我的问题是由于CORS,尽管我启用了CORS chrome插件,但仍然是因为我指定了选项,一个飞行前响应被发送到服务器,但被拒绝

有帮助的解决方案是用Java在我的rest控制器上添加CORS注释,所以这里可能只有服务器端代码可以提供帮助

@CrossOrigin(origins = "*")  <------ this solved the issue of post request getting failed
@RestController
public class ProductController {...

@CrossOrigin(origins=“*”)如果您使用的是angular 4
新头文件({'Content Type':'application/json'),请使用@angular/http中的头文件,而不是HttpHeaders中的头文件这是另一个问题,我已经看到了关于这个问题的几个问题,所以,搜索它你会得到一个肯定的答案!我可以想象,当您在POST请求中提供头时,您得到的是403,因此Angular首先发送一个选项请求,而您的服务器端逻辑并没有为此设置。您需要在服务器上启用CORS,否则您将得到403/405。请使用上面评论中的结果更新您的问题。选项定义在哪里?感谢您的回答@msanford,我正在处理它,将在我来到解决方案时更新处理它,当我将Http更改为HttpClient时,此链接可能与此相关,我在控制台中遇到以下错误,HttpClient没有提供程序,您能告诉我一些相关的信息吗concept@AkshayVijayJain您需要在
@NgModule
imports:[]
列表中包含
HttpClientModule
。或者是否有其他方法或文档,要确定哪个模块包含我们尝试使用的组件,我将使用angular和asp.net核心web api。我还启用了cors。get请求成功,但post请求给我CORS错误访问被拒绝。有什么主意吗?谢谢