2017-02-26 19 views
0

我正在使用angular-cli,从localhost:4200运行项目,并尝试从myurl:8080获取服务器请求。这不起作用的原因,尝试了所有的选择,但没有任何帮助。Angular-CLI代理到后端仍然不工作

这里是我的proxy.config.json文件:

{ 
    "/myservice/*": { 
    "target": "http://myurl:8080", 
    "secure": false, 
    "changeOrigin": true, 
    "logLevel": "debug", 
    "pathRewrite": {"^/myservice" : ""} 
    } 
} 

简单http.get

private Url = 'http://myurl:8080/myservice/list/getlist'; 

    headers = new Headers({ 'Access-Control-Allow-Origin': '*' }); 
    options = new RequestOptions({ headers: this.headers, withCredentials: true}); 

    getList(): Observable<any> { 
    return this.http.get(this.Url, this.options) 
     .map(this.extractData) 
     .catch(this.handleError); 
    } 

浏览器的结果是:

403(Forbi dden)。对预检请求的响应未通过访问 控制检查: 请求的资源上没有“访问控制允许来源”标头。原因'http://localhost:4200'因此是 不允许访问。该响应具有HTTP状态码403.

如果我只是冲浪到http://myurl:8080/myservice/list/getlist我会得到JSON结果。有没有人让它工作?

npm start@角/ CLI正在写

Proxy created: /myservice -> http://myurl:8080 
[HPM] Proy rewrite rule create "^/myservice" ~" 
[HPM] Subscribed to http-proxy events: ['error', 'close'] 

是正常吗?

回答

0

嗨,我得到了同样的问题,你检查,你开始'ng服务--proxy配置proxy.conf.json'?如果是尝试“捕捉所有proxyconfig”是这样的:

{ 
    "**": { 
    "target": "http://myurl:8080", 
    "secure": false, 
    "changeOrigin": false, 
    "logLevel": "debug" 
    }} 

有了这个,你可以测试是否任何请求转到您的backendserver。

+0

您好,我有同样的问题,但你的方法是行不通的。也许你有什么想法? https://stackoverflow.com/questions/44872498/configure-angular-cli-proxy-for-custom-headers-in-request-to-backend 谢谢 – JDev

0

问题是,您正尝试从本地主机调用完整的后端网址。如果你想在“changeOrigin”代理选项,以使应用,你必须尝试调用后端这样的:

http://localhost:4200/myservice这将指向 - >http://backendUrl:8080/myservice 和服务器将看到原点backendurl。

如果我们想发出从backendurl中的MyService然后路径重写代理选项“pathRewrite”:{“^ /为MyService”:“”}

所以尽量使用本地主机调用后端:4200 /为MyService 和设置代理CONFIGS这样的:

{ 
    "/myservice/*": { 
    "target": "http://myurl:8080", 
    "secure": false, 
    "changeOrigin": true, 
    "logLevel": "debug", 
    } 
} 

提示:对于更高级的选项,因为角CLI服务使用的WebPack-dev的服务器也使用HTTP代理中间件也使用HTTP的代理你也可以将他们的选项应用到proxy.conf.js文件。 https://github.com/chimurai/http-proxy-middleware#options

e.x cookieRewrite

const PROXY_CONFIG = [ 
    { 
    context: [ 
     "/myservice" 
    ], 
    target: "http://backendurl", 
    secure: false, 
    logLevel: "debug", 
    changeOrigin: true, 
    cookieDomainRewrite: { 
     "backendurl": "" 
    } 
    } 
]; 

module.exports = PROXY_CONFIG; 
相关问题