CORS конфиг на угловой 7 - PullRequest
       2

CORS конфиг на угловой 7

0 голосов
/ 14 декабря 2018

Здравствуйте, я изо всех сил пытался заставить CORS работать.Я увидел этот пост , который, как мне кажется, приблизил меня, однако, я перешел по ссылке в этом посте на 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 голосов
/ 17 декабря 2018

Я изучал это в течение приблизительно 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
    }

Надеюсь, это поможет другим!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...