Приложение Angular 8, политика CORS с веб-сервисами ASMX - возвращает 403 (запрещено) - PullRequest
0 голосов
/ 08 ноября 2019

У меня проблема, возможно, с политикой CORS. Мое приложение написано на следующих технологиях:

  • Frontend : Angular 8, Typescript
  • Backend : ASP.NET, в .asmxвеб-сервисы

Когда я запустил приложение на Ang2, все было в порядке. Через несколько лет я перешел на Ang8 (пока что вообще не развивался) и начал испытывать проблемы, связанные с CORS. На производстве все в порядке, потому что оба размещены на одном и том же порту и на одном сервере. На локальной машине разработчика у меня были проблемы, которые я не смог решить. Я отключил защиту CORS из-за разработки, используя

chrome.exe --disable-web-security --user-data-dir={dir}

с тех пор, как я мог разрабатывать до сих пор. Теперь Chrome обновлен до версии 78, и у меня возникли проблемы ... Все мои вызовы API на dev и prd начали возвращать ошибки, связанные с CORS, поэтому я искал и обнаружил следующее:

https://support.google.com/chrome/thread/11089651?hl=en

решение отлично работает на производстве, где тот же сервер и порт является преимуществом, но не работает на компьютере разработчика. Приложение работает с localhost: 4200, а API работает с localhost: 58082. Поэтому я считаю, что это по-прежнему проблема CORS, хотя ответ на самом деле такой:

"Http failure response for {URL}: 403 Forbidden"

Мне все еще нужно решить эту проблему, потому что я не хочу говорить всем пользователям: «Перейти кстраница настройки Chrome и отключить что-то "(что я на самом деле не знаю точно, каковы последствия ...)

Может быть, также некоторый код поможет ... Так что здесь. Это мои варианты с заголовками, отправленными в API из приложения Ang8:

  const options = { headers: new HttpHeaders({
      'Access-Control-Allow-Origin': '*',
      'Content-Type': 'application/json',
      'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
      'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token'
    }),
    params: new HttpParams().set('Param', param.toString())
  };
  return this.http.get<Response>(this.Url, options)

, и вот выдержка из web.config служб asmx относительно этих заголовков:

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>
    ...
  </system.webServer>

Любая помощь будетбыть действительно оцененным, так как я застрял и не могу продолжать развитие. И как раз перед тем, как кто-нибудь спросит, да, эти службы работают и доступны:)

Заранее спасибо.

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