angular - CORS 策略已阻止从源访问 API 方法
问题描述
我正在使用 .Net Core 构建 API 和 Angular Web 应用程序来使用这些 API。两者都使用不同的端口在本地托管。
.Net 核心 API: http://localhost:5000
Angular Web 应用程序: http://localhost:4444
这是我在 Angular 中的服务方法
export class AdvertisementService {
// Define API
apiURL = environment.apiUrl;
constructor(private http: HttpClient) {}
// Configure HTTP Options
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
}
// HttpClient API get() method => Fetch Advertisement List.
getAdvertisements(): Observable<Advertisement[]> {
return this.http.get<Advertisement>(this.apiURL + '/Advertisements')
.pipe(retry(1),catchError(this.handleError))
}
// HttpClient API post() method => Create Advertisement
createAdvertisement(advertisement): Observable<Advertisement> {
return this.http.post<Advertisement>(this.apiURL + '/Advertisements', JSON.stringify(advertisement), this.httpOptions)
.pipe(retry(1),catchError(this.handleError))
}
private handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
}
当我通过 Angular App 调用 API 方法时,它会引发以下错误:
从源“ http://localhost:4444 ”访问“ http://localhost:5000/api/Advertisements ”处的 XMLHttpRequest已被 CORS 策略阻止:Access-Control-Allow 不允许请求标头字段内容类型- 预检响应中的标头。
我在我的 .Net Core 中添加了 CORS,如下所示在ConfigureServices方法中:
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://localhost:4444");
});
});
解决方案
在 startup.cs 中添加services.AddCors();
ConfigureServices 方法和Configure 方法app.UseCors(x => x.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
推荐阅读
- html - 无法在 Ionic 中读取属性
- html - 网页两侧的广告展示位置
- c++ - 读取单值 HDF5 C++
- python - scikit-learn GridSearchCV 抛出 RuntimeError: Cannot clone object Apply 因为构造函数没有设置参数 fn
- module - 安装解压模块
- php - 在 PHP 中循环之前对数组项进行分组
- javascript - React native - 如何过滤数组异步(async/await)
- reactjs - 哪些文件要上传到主机 create-react-app 网站?
- javascript - Alexa 自定义意图接受未存储在应该触发它的可能 slot.values 中的值
- hadoop - 蜂巢插入覆盖目录存储为镶木地板创建的具有默认名称的列