Angularjs 如何从另一个域脚本调用api?
我想使用angular2 typescript从另一个域调用web服务。 我使用以下代码来调用apiAngularjs 如何从另一个域脚本调用api?,angularjs,typescript,angular,Angularjs,Typescript,Angular,我想使用angular2 typescript从另一个域调用web服务。 我使用以下代码来调用api var req_dict = { method: RequestMethod.Get, url: 'http//127.0.0.1:5000/users/', headers: this.head } var options = new RequestOptio
var req_dict = {
method: RequestMethod.Get,
url: 'http//127.0.0.1:5000/users/',
headers: this.head
}
var options = new RequestOptions(req_dict);
var req = new Request(options);
this.http.request(req).subscribe({});
我在http//127.0.0.1:8000中托管了我的应用程序。我想使用端口5000的api。当我检查控制台时,请求将
我只想调用http//127.0.0.1:5000/users/。在angular2中如何通过绝对url调用api?事实上,这不是TypeScript或angular2的问题,而是CORS的问题。这些博客文章可以帮助您详细了解其工作原理:
Origin
头。有两种情况:
- 简单请求。如果我们使用HTTPGET、HEAD和POST方法,则此用例适用。对于POST方法,仅支持具有以下值的内容类型:
、text/plain
和application/x-www-form-urlencoded
multipart/form data
- 预引导请求。当“简单请求”用例不适用时,会发出第一个请求(使用HTTP选项方法)来检查在跨域请求的上下文中可以做什么
访问控制允许原点
一个
200 OK HTTP/1.1
(...)
Access-Control-Allow-Origin: *
要调试此类问题,可以在浏览器中使用开发人员工具(网络选项卡)
关于Angular2,只需像任何其他请求一样使用Http
对象(例如相同的域):
希望它能帮助你,
Thierry检查您的url
url:'http//127.0.0.1:5000/users/'
应该是url:'http://127.0.0.1:5000/users/“
即使您使用http,它也应该是url:”http://127.0.0.1:5000/users/“
噢。。是 啊谢谢workedYes,即使url格式正确,由于端口不同,CORS也会发挥作用。另一方面(IMHO),在http.get
上使用subscribe
可能会阻止组件渲染。也许更好的方法是在组件上使用async
管道。
return this.http.get('https://angular2.apispark.net/v1/companies/')
.map(res => res.json()).subscribe(
...
);