角度7的CORS配置

时间:2018-12-14 13:56:04

标签: angular cors

您好,我一直在努力使CORS工作。我看到了this post,我想离我更近了,但是,我已经按照该帖子中指向angular.io的链接进行了使​​用。

所以让我解释一下我的问题,我正在创建代理:

var HttpsProxyAgent = require('https-proxy-agent');
var proxyConfig = [{
  context: '/api',
  target: 'http://localhost:3000',
  secure: false
}];

function setupForCorporateProxy(proxyConfig) {
  var proxyServer = process.env.http_proxy || process.env.HTTP_PROXY;
  if (proxyServer) {
    var agent = new HttpsProxyAgent(proxyServer);
    console.log('Using corporate proxy server: ' + proxyServer);
    proxyConfig.forEach(function(entry) {
      entry.agent = agent;
    });
  }
  return proxyConfig;
}

module.exports = setupForCorporateProxy(proxyConfig);

我正在呼叫npm start,其脚本如下:"start": "ng serve --proxy-config proxy.js",但我正在尝试撰写类似以下内容的帖子:

let url:string='/api/Acounts/Login';

this.http.post(url, body).subscribe(x=> x.doStuff);

我希望它调用http://localhost:3000/Accounts/Login,但实际上它正在调用http://localhost:42000/api/Accounts/Login

所以我的问题是为什么它称呼不正确的地址,以及如何使其称呼正确的地址?

编辑: 我也想添加protractor.conf.js

const { SpecReporter } = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
};

1 个答案:

答案 0 :(得分:1)

我已经研究了大约2天,在这里我遇到了多个问题。首先是我正在使用的MVC项目需要完成一些事情。

我需要向WebConfig文件中添加一些内容:

  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
  </customHeaders>

,我需要添加到GlobalApplication.cs文件中。

   private void GlobalApplication_PreRequestHandlerExecute(object sender, EventArgs e)
    {
  #if DEBUG
        if (Request.HttpMethod == "OPTIONS")
        {
            Response.StatusCode = 200;
            Response.End();
            return;
        }
  #endif
    }

希望这对其他人有帮助!