Проблема с описанием
У меня разработано и развернуто мое интерфейсное приложение с использованием Angular и nginx соответственно.
Сервер ресурсов разработан с использованием Без нагрузки NodeJS.
Поток равен
UI -> express gateway -> resource server
Всякий раз, когда вы пытаетесь вызвать API из пользовательского интерфейса , с включенной key-auth в express шлюзе, получая ошибку
Доступ к XMLHttpRequest по 'http://ip: порт / api / имя_функции ' из источника 'http://url 'было заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Same API when called from Postman works though. It also works if I remove 'key-auth' from gateway.
Совместное использование изменений кода, выполненных на различных уровнях:
Код - Express Шлюз
example:
apiEndpoints:
- example
policies:
- cors:
- action:
origin: ["*"]
methods: "HEAD,GET,PUT,PATCH,POST,DELETE,OPTIONS"
preflightContinue: true
optionsSuccessStatus: 204
maxAge: 600
allowedHeaders:
[
"Origin, X-Requested-With, Content-Type, Accept, Authorization",
]
- key-auth:
- condition:
name: not
condition:
name: method
methods:
- OPTIONS
- proxy:
- action:
serviceEndpoint: exampleService
proxyTimeout: 0
Код - Angular
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'Application/json; charset=UTF-8',
'Authorization': "Bearer " + apiKey,
'Access-Control-Allow-Origin': '*'
}),
};
Код - Сервер ресурсов - маршруты. js
export default function routes(app) {
app.use(cors());
// Also tried setting res.setHeader explicitly, but no success.
}
Код - nginx уровень
server(){
...
location / {
# Simple Requests
if ($request_method ~* "(GET|POST)") {
add_header "Access-Control-Allow-Origin" *;
}
# Preflighted requests
if ($request_method = OPTIONS ) {
add_header "Access-Control-Allow-Origin" *;
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
return 200;
}
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
Я прошел через различные л чернила по этой проблеме, пробовал несколько вещей, как показано выше, но не мог найти никакого решения, таким образом поднимая новое.
Как удалить эту ошибку CORs?