small issue about Nginx upload module
Дмитрий Дедюхин
dedukhin на mail.ru
Сб Сен 24 04:24:17 UTC 2011
Добрый день.
Модуль Валерия слишком полезен, поэтому все уже сделано давным давно.
Смотрите здесь https://github.com/vkholodkov/nginx-upload-module/commits/2.2 коммиты от 14 декабря 2010 года и диррективу upload_add_header, предназначенную именно для этих целей.
24 сентября 2011, 03:23 от Roman Vasilyev <roman.vasilyev at yousendit.com>:
> Наткнулся на достаточно неприятное поведение модуля.
>
> При upload выдается нотификация из разряда:
> HTTP/1.1 200 OK
> Server: nginx/1.1.4
> Content-Type: text/html
> Transfer-Encoding: chunked
> Connection: keep-alive
>
> в которой невозможно упавлять заголовками.
> тоесть Access-Control-Allow-Origin * выставить невозможно.
> Поскольку HTML5 работает crossdomain то без этого заголовка все идет прахом.
> Прилагаю пример конфига
>
> location / {
> if ($request_method = 'OPTIONS') {
> add_header Access-Control-Allow-Origin *;
> add_header Access-Control-Allow-Methods 'POST, OPTIONS';
> add_header Access-Control-Allow-Headers
> 'X-Content-Range,Session-ID,Content-Type,Content-Disposition';
> return 200;
> }
> add_header Access-Control-Allow-Origin *;
>
> upload_resumable on;
> upload_pass /uwsgi/blah;
> upload_store /usr/share/nginx/;
> }
>
> захардкодил пока этот заголовок прямо в ответ сервера, хотя конечно это
> не дело, на всякий случай вкладываю патч того безобразия что я сделал, и
> всетаки хотелось бы получить более верное направление как это лучше решить.
> =============================================
> [root at pocsto01 nginx-1.1.4]# cat 123.patch
> diff -Naur nginx_upload_module-2.2.0/ngx_http_upload_module.c
> nginx_upload_module-2.2.0.new/ngx_http_upload_module.c
> --- nginx_upload_module-2.2.0/ngx_http_upload_module.c 2010-09-27
> 11:54:15.000000000 -0700
> +++ nginx_upload_module-2.2.0.new/ngx_http_upload_module.c 2011-09-23
> 16:03:20.000000000 -0700
> @@ -771,6 +771,13 @@
> ngx_str_t dummy = ngx_string("<ngx_upload_module_dummy>");
> ngx_table_elt_t *h;
>
> + h = ngx_list_push(&r->headers_out.headers);
> + if (h == NULL) {
> + return NGX_HTTP_INTERNAL_SERVER_ERROR;
> + }
> + h->hash = 1;
> + ngx_str_set(&h->key, "Access-Control-Allow-Origin");
> + ngx_str_set(&h->value, "*");
> if(ctx->prevent_output) {
> r->headers_out.status = NGX_HTTP_CREATED;
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
Подробная информация о списке рассылки nginx-ru