Ionic Angular前后端CORS请求失败问题求助
Ionic Angular应用CORS请求失败问题排查
我正在用Ionic Angular开发应用,前端运行在localhost:8100,后端运行在localhost:3700。从数据库获取数据时遇到以下错误:
"Cross-origin request blocked: The same-origin policy does not allow reading the remote resource at https://localhost:3700/api/productid/1. (Reason: CORS request failed.) Status code: (null)."
已尝试的后端CORS配置
我已安装cors包,并尝试过两种配置方式:
基础CORS配置
var express = require('express'); var cors = require('cors') //cors var app = express(); app.use(cors());
自定义头CORS配置
app.use( cors({ allowedHeaders: ["authorization", "Content-Type"], // 可修改头信息 exposedHeaders: ["authorization"], // 可修改头信息 origin: "*", methods: "GET,HEAD,PUT,PATCH,POST,DELETE", preflightContinue: false }); );
前端代码
Angular服务代码
import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class ProductosService { private urlApi = 'https://localhost:3700/api/productoid/1'; constructor(private http: HttpClient) { } public getData() : Observable<any>{ return this.http.get<any>(this.urlApi); } }
组件代码
import { Component, OnInit } from '@angular/core'; import { ProductosService } from '../services/productos.service'; @Component({ selector: 'app-tab2', templateUrl: 'tab2.page.html', styleUrls: ['tab2.page.scss'] }) export class Tab2Page implements OnInit { data: any[] = []; constructor(private productosService: ProductosService) {} ngOnInit(): void { this.llenarData(); } llenarData(){ this.productosService.getData().subscribe(data => {this.data = data; console.log(this.data) }) } }
额外信息
- 试过Firefox、Chrome、Edge、Opera等浏览器,问题依旧
- 使用Postman调用后端接口可正常返回响应
编辑1
按建议在allowedHeaders中添加"x-requested-with",更新后的配置如下:
var express = require('express'); const cors = require('cors'); var app = express(); app.use( cors({ allowedHeaders: ["authorization", "Content-Type", "x-requested-with"], exposedHeaders: ["authorization"], origin: "*", methods: "GET,HEAD,PUT,PATCH,POST,DELETE", preflightContinue: false }));
错误仍未解决,补充:应用包含用户账号登录验证模块。
内容的提问来源于stack exchange,提问作者Axel15
相关产品推荐
相关产品推荐

