У меня проблема, возможно, с политикой 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>
Любая помощь будетбыть действительно оцененным, так как я застрял и не могу продолжать развитие. И как раз перед тем, как кто-нибудь спросит, да, эти службы работают и доступны:)
Заранее спасибо.