2017-07-17 86 views
1

我是Angular 2和CORS的新手从Angular2到Rest API的Http POST [CORS]

我想将表单数据从Angular 2发布到Rest控制器。但是我发现了以下错误

具有状态响应:0和网址:空

component.ts 
--------------------------------------- 

onSubmit(form:NgForm) { 

console.log(form.value); 
var job = JSON.stringify(form.value); 
alert(job); //getting the value 



this.jobCleanupService.addJobCleanUp(job).subscribe(
     data => alert(data), 
     error => alert(error) 
    ); 
    } 


jobcleanup.service.ts 
---------------------------------- 

addJobCleanUp(job:any){ 
     let headers = new Headers({ 'Content-Type': 'application/json' }); 
let options = new RequestOptions({ headers: headers }); 

     alert('service'+ job); //getting the value 

return this.http.post('http://localhost:8080/addjobcleanup', job,options) 
        .map(res => res.json()); 
    } 

休息控制器在不同的回购

RestController 
--------------------------- 

@CrossOrigin(origins = "http://localhost:4200/newjobcleanup") 
    @RequestMapping(value = "/addjobcleanup" ,method = RequestMethod.POST) 
    @ResponseBody 
    public String addJobCleanUp(@PathVariable String job) { 
     logger.info("Add Job Clean Up"); 
     return "Success"; 
    } 
+0

您使用的是正确的网址吗?我看到localhost:4200和localhost:8080 –

+0

您是否已将代理配置添加到您的'package.json'? –

回答

1

你只需要使用http://localhost:4200/为原点,我认为这会有所帮助。

+0

非常感谢,它的工作原理。我能够看到在Rest控制器方法中写入的日志语句。 @CrossOrigin(起源= “HTTP://本地主机:4200”) @RequestMapping(值= “/ addjobcleanup”,方法= RequestMethod.POST) @ResponseBody 公共字符串addJobCleanUp(@RequestBody字符串作业){ logger.info (“添加工作清理”); 返回工作; } – Jan69