首页 > 解决方案 > 如何使用 Angular http get 方法调用解决跨源问题并获取响应数据?

问题描述

我在角度应用程序中获取 sap odata 时遇到问题。我在我的角度服务调用中使用 sap odata 链接,使用 get 方法尝试访问和获取数据。我已经为代理配置了 proxy.conf.json 以连接 sap 链接,但我遇到了一个问题,即我无法从服务器端获得响应。请找到proxy.config.json文件内容

{
    "/sap": {
        "target" : "http://server.domain.com:8002",
        "secure" : false,
        "pathRewrite": {
            "^/sap": ""
        },
        "changeOrigin": true,
        "logLevel": "debug"
    }

}

以下是我的角度服务电话

constructor(private host: string, private http: Http) {
    }
    var headers = new Headers();
            headers.append('Content-Type', 'application/json');
            headers.append('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT');
            headers.append('Accept', 'application/json ');
            headers.append('Access-Control-Allow-Origin','*');
            headers.append('Access-Control-Allow-Headers','application/json');
            headers.append('X-Requested-With','XMLHttpRequest');

            return this.http.get('http://server.domain.com:8002/sap/opu/odata/sap/ABC_FD_SRV/ID_GEN_Set?sap-client=010', {headers}).pipe(map((response: any) => response));

我可以看到状态正常且代码为 200 的网络,但在响应选项卡中没有响应,只收到空白。但是在服务控制台中我只收到这样的

Response {_body: "", status: 200, ok: true, statusText: "OK", headers: Headers, …}
headers: Headers {_headers: Map(0), _normalizedNames: Map(0)}
ok: true
status: 200
statusText: "OK"
type: 2
url: "http://server.domain.com:8002/sap/opu/odata/sap/ABC_FD_SRV/ID_GEN_Set?sap-client=010"
_body: ""
__proto__: Body

但是当我将 url 粘贴到浏览器中时,我可以看到 xml 格式的数据或 url 更改为 json 格式。

如果我错过了配置代理的任何内容,任何人都可以检查我的代码。

标签: angularproxycross-browserodata

解决方案


推荐阅读