Я установил предикат mountebank для проксирования подчиненного сервера. В ответе сервера Access-Control-Allow-Origin
не имеет значения *
. Я определенно могу записать ответы от нижестоящего сервера, а затем запустить новый экземпляр mountebank с параметром allowCORS
, который позволяет моему браузеру использовать этот тестовый дубль без проблем с CORS.
Мне было интересно, можно ли напрямую использовать предикат прокси для изменения заголовков ответов от нижестоящих серверов, чтобы добавить "Access-Control-Allow-Origin": "*",
. Таким образом, я могу использовать только один экземпляр mountebank с опцией proxyOnce
и разрешить моему браузеру взаимодействовать с этим тестовым двойником. В моем случае это помогает мне перейти от record and replay
к простому использованию proxy
в нисходящем направлении.
Я также пытался заглушить метод OPTIONS
, но он не работает.
curl --location --request POST 'http://localhost:2525/imposters' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"port": 4500,
"protocol": "http",
"name": "Proxy Request",
"allowCORS": true,
"stubs": [
{
"predicates": [
{
"equals": {
"method": "OPTIONS"
}
}
],
"responses": [
{
"is": {
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "${ALLOW-HEADERS}"
}
},
"_behaviors": {
"copy": [
{
"from": {
"headers": "Access-Control-Request-Headers"
},
"into": "${ALLOW-HEADERS}",
"using": {
"method": "regex",
"selector": ".+"
}
}
]
}
}
]
},
{
"responses": [
{
"proxy": {
"to": "https://downstream.api.com",
"mode": "proxyOnce",
"predicateGenerators": [
{
"matches": {
"method": true,
"path": true,
"query": true
}
}
]
}
}
]
}
]
}'
Какие-либо предложения?
responses
, и это тоже не сработало"addDecorateBehavior": "config => { config.response.headers = {...config.response.headers, 'Access-Control-Allow-Origin': '*'} }",
. Не уверен, что я пытаюсь сделать что-то невозможное. - person Ali Bhagat   schedule 03.12.2020