当前位置: 首页 > 知识库问答 >
问题:

由于某种原因,后端的Angular-CLI代理仍然不起作用

陈实
2023-03-14

我正在使用angular-cli,从localhost:4200运行项目,并尝试从myurl:8080获取服务器请求。由于某种原因,这不起作用,已经尝试了所有选项,但没有帮助。

这是我的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(禁止)。对预检请求的响应未通过访问控制检查:请求的资源上不存在“访问控制-允许-源”标头。因此,不允许访问源“http://localhost:4200”。响应具有 HTTP 状态代码 403。

如果我浏览http://myurl:8080/my service/list/getlist,我会得到JSON结果。有人成功了吗?

npm启动后,@Angular/cli正在写入

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

这正常吗?

共有2个答案

万坚壁
2023-03-14

嗨,我也遇到了同样的问题,你有没有检查你是否以'ng service--proxy-configproxy.conf.json'开头?如果是,请尝试这样的“捕获所有proxyconfig”:

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

有了它,您可以测试是否有任何请求进入后端服务器。

戚均
2023-03-14

问题是您正在尝试从本地主机调用完整的后端URL。如果您希望“changeOrigin”代理选项进行应用,则必须尝试像这样调用后端:

http://localhost:4200/myservice这将指向-

如果我们想从后端URL发出myservice,那么路径重写代理选项是“pathRewrite”:{“^/myservice”:“}

所以尝试使用localhost:4200/myservice调用后端,并像这样设置代理配置:

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

提示:对于更高级的选项,因为angular-cli服务器使用webpack-dev-server,它也使用http-proxy中间件,也使用http-proxy,您也可以将它们的选项应用到proxy.conf.js文件。https://github.com/chimurai/http-proxy-middleware#options

e. x cookie重写

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

module.exports = PROXY_CONFIG;
 类似资料:
  • https://github.com/angular/angular-cli#proxy-to-backend这里提供了如何代理到后端的说明。我一步一步地做了每件事,但请求仍然没有被代理。 8080-my Express后端4200-my Angular2前端 在Angular2项目中,我有文件的内容如下: 在Angular2 package.json中,我将过程更改为 在inside comma

  • 问题内容: 只是尝试删除所有文档,并这样做: 然后承诺: 我得到答复: 但是当我搜索时,我仍然会得到结果。 我做错什么了? 问题答案: 不确定是否重要,但是您也可以编码: 要尝试的另一件事是使用POST方法(调用update的首选方法):

  • 问题内容: 我是PHP的新手,正在使用mail函数发送无法正常工作的电子邮件。我收到成功消息,但仍然无法正常工作 相同的代码 我是否缺少任何内容,我是否需要为此功能包括任何文件。.我来自asp.net,这是在网站上找到的基本脚本。 我尝试了其他与邮件相关的脚本,这些脚本也无法使用。 我正在网站上而不是在本地上运行此脚本 问题答案: 这可能是配置错误。如果您坚持使用PHP 函数,则必须进行编辑。 如

  • 嗯,我使用SoundPool在ImageView声音上进行onClick,其中一些声音开始了另一个活动。像这样: 有什么建议吗? UPD:日志:

  • 我正在使用名为SpeechRecognitor的android语音API,试图将语音转换为文本,但由于某种原因,只要我点击按钮,我就会看到“目前无法访问谷歌”的消息,窗口就会关闭,而不必等待我的语音。或者声音只是口吃,什么也没发生。 为什么?这个代码怎么了?我认为这段代码应该有效,因为对于其他人来说,它工作得很好。也许我的模拟器(Nexus One API 22)不支持此API?我只是不知道有什么

  • 这是我的密码 没有语法错误,但是我的Jtag没有添加(按钮工作正常)。我不想从null更改布局,因为我希望能够定义按钮和标签的位置。有人知道为什么这行不通吗?