CLI CORS代理不改变原点,仍然获得403 reqs?

Chr*_* W. 5 cors angular-cli angular

是的,我发现了很多相似的东西,但我的实例仍未解决.我想避免杀死浏览器端的安全性,而是让代理完成它的工作,但我担心我在设置中遗漏了一些无聊的细节,我无论如何都不是CORS专家.

所以,我得到的...... 403;

Failed to load http://localhost:10000/some/rest/endpoint: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

其中localhost:10000是我的api url,:4200是默认的Angular CLI实例.

所以我配置了一个代理,因为我希望在angular.json中这样做;

"serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "angular-proj:build",
            "proxyConfig": "./proxy.conf.json"
          },
Run Code Online (Sandbox Code Playgroud)

并添加proxy.conf.json;

{
    "/some/rest/*": {
      "target": "http://localhost:10000",
      "secure": false,
      "changeOrigin": true,
      "logLevel": "debug"
    }
  }
Run Code Online (Sandbox Code Playgroud)

我提供它甚至标记CLI服务确认的proxy.conf;

[HPM] Proxy created: /some/rest -> http://localhost:10000 等等...

....除了我仍然得到403,仍然在Request*标题中看到;

Host: localhost:10000
Origin: http://localhost:4200
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,我在这里错过了什么内容?我不想把所有来源的请求写成星号,而且我不想关闭浏览器检查,我更愿意将这个很好地捆绑在服务配置中,就像我这样做另外一对眼睛非常受欢迎.干杯

ADDENDUM:我的GET似乎经历了很好的事情,不过像Access-Control-Request-Method: POST演出一样Request Method: OPTIONS,这就是我得到我的403 ...为什么POST会成为一个选项?

ADDENDUM#2:值得一提的是,我在Chrome/Firefox中遇到了这个问题,但Edge中的一切都是犹太人的???

ADDENDUM#3:正在运行,--aot=true与代理一样.

Twi*_*her 5

以下标头是错误的,这就是为什么您的浏览器仍会触发“同源策略”握手的原因:

Host: localhost:10000
Origin: http://localhost:4200
Run Code Online (Sandbox Code Playgroud)

他们应该是:

Host: localhost:4200
Origin: http://localhost:4200
Run Code Online (Sandbox Code Playgroud)

我坚信您没有将您的请求从 更改http://localhost:10000/*http://localhost:4200/some/rest/*并且“大量类似的东西”不包括以下内容:本地主机上的 Angular2 CORS 问题


Chr*_* W. 3

通过更多挖掘发现问题是独一无二的。发现在服务器端(aspnet api v1)的链接配置中有一个隐藏的条件,用于寻找UrlReferrer.Authority在新的首次实例上不存在的选项。

把它拉出来,进行Access-Control-Allow-Origin相应的改变,然后去比赛。

干杯