我的问题在于我的api Angular 6.一旦在发送POST请求时创建了拦截器,这些就会变成OPTIONS请求。
有什么问题?
这是一个服务的代码
import { Injectable } from '@angular/core';
import { HttpClient, HttpClientModule } from '@angular/common/http';
import { AppConfig } from '../app.config';
import { Perfil } from '../Entities/Perfil';
// import { Http } from '@angular/http';
@Injectable({
providedIn: 'root'
})
export class UsuariosService {
constructor(private http: HttpClient, private config: AppConfig) { }
private per = new Perfil(1);
getPerfiles() {
return this.http.post(this.config.apiUrl + 'perfiles/Buscar/', this.per);
}
}
此图片将帮助我们解决此问题:
问候!
答案 0 :(得分:1)
这是一个CORS问题,就像lomboboo说OPTIONS
是一个特殊的请求,要求服务器询问我该怎么做,我是否可以访问内容?
为了提供修复,您需要在服务器(后端)中实现CORS标头并允许POST
以及您需要的任何其他操作。
答案 1 :(得分:0)
//**need to pass header in your post api**
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
getPerfiles() {
return this.http.post(this.config.apiUrl + 'perfiles/Buscar/', this.per,httpOptions).subscribe(result => {
console.log(result);
}, error => console.log('There was an error: '));
};
}
答案 2 :(得分:0)
Yeahhh! 。我知道他们是cors,并且确实在后面实施,但很糟糕。 我实施的解决方案是这样的: (使用.Net Framework 4)
WebApiConfig.cs内部
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
}
感谢 lomboboo 和 Mike ,这是非常有帮助的!