오늘은 개발하면서 이상한 현상이 나와서 이렇게 포스팅을 합니다.
엑셀다운로드를 post로 해서 구현을 하는데 Front에서 Content-Disposition 값을 받지를 못 하는 현상이에요.
server {
listen 9030;
listen [::]:9030;
#server_name localhost;
location / {
# CORS Accept
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,authorization,x-api-key,X-Api-Key';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,authorization,x-api-key,X-Api-Key' always;
add_header 'Access-Control-Expose-Headers' 'Content-Disposition,Content-Length,Content-Range' always;
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,authorization,x-api-key,X-Api-Key' always;
add_header 'Access-Control-Expose-Headers' 'Content-Disposition,Content-Length,Content-Range' always;
}
proxy_pass http://localhost:9050;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
client_max_body_size 100M;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_redirect off;
}
위의 것으로는 어떤걸 해야하실지 감이 좀 오시나요?
위의 부분에서 허용할 것을 허용을 해줘야 Front에서 값을 받을수가 있어요.
override fun addCorsMappings(registry: CorsRegistry) {
if (!springProfile.equals("prd")) {
registry.addMapping("/**")
.allowedOrigins(*allowOrigins.toTypedArray())
.allowedHeaders(*allowHeaders.toTypedArray())
.allowedMethods(*allowMethods.toTypedArray())
.exposedHeaders("Content-Disposition,Content-Length,Content-Range")
.maxAge(8000L)
allowOrigins.forEach { it ->
log.debug("[DEBUG] 허용된 오리진 : ${it}")
}
allowHeaders.forEach { it ->
log.debug("[DEBUG] 허용된 헤더 : ${it}")
}
allowMethods.forEach { it ->
log.debug("[DEBUG] 허용된 메서드 : ${it}")
}
}
}
소스에 보시면 exposedHeaders 에 Content-Disposition, Content-Length, Content-Range 를 Header 에 노출시켜라고 이렇세 명시를 해줘야 Front에서 값을 받을 수 있네요.
오늘도 프로젝트를 하면서 재미있는 것을 하나 찾은 것 같습니다.
[q-input] text-align 방법 (0) | 2024.01.30 |
---|---|
[Quasar] localhost 로 개발에서 안될때 해결방법[팁] (1) | 2023.10.18 |
[Nuxt] command not found : nuxt (1) | 2023.08.21 |
[qCalendar] MonthSlotDay 예제 오류 (0) | 2023.06.01 |
[Nuxt3-Quasar] qCalendar를 이용한 DatePicker (0) | 2023.05.25 |