Skip to main content

Gzip upload on browsers



Today, I faced a problem that I could not upload my archive file with gzip format on Firefox, even it worked on Chrome. I was using macOS. My application had a setting to whitelist accepted files. I’ve already added "application/gzip" to that list. "It’s strange!", I thought.

I finally figured out that my uploaded file's type actually was "application/x-gzip" on Firefox. I also asked my colleagues to check their uploaded files on Window and Ubuntu. Hmm… they were totally different! It was "application/x-compressed" on Window, and was "application/x-compressed-tar" on Ubuntu.

In fact, gzip is already standardized by IANA. There is a note in RFC-6713 as below:

"Some applications have informally used media types such as application/gzip-compressed, application/gzipped, application/x-gunzip, application/x-gzip, application/x-gzip-compressed, and gzip/document to describe data compressed with gzip. The media types defined in this document should replace those media types in future applications."

As you can see, the difference of media types among browsers still persists as of this writing. That was the root cause!

Therefore, I had to added all media types including "application/zip,application/x-gzip,application/x-compressed,application/x-compressed-tar" in my app's whitelist.

Comments

  1. anh làm một blog về sự quan trọng của tiếng anh ( speaking, writing ) đi anh. Một dev có được skill viết như anh thì có được đãi ngộ gì đặc biệt hơn kh ạ

    ReplyDelete
    Replies
    1. Để mình kể cho bạn nghe câu chuyện học tiếng Anh của mình để xem nó quan trọng thế nào với mình nhé. Thực ra, ban đầu động lực học tiếng Anh duy nhất của mình là cố gắng "sống sót" trong môi trường làm việc sử dụng tiếng Anh để giao tiếp. Lúc đó, trong team mình còn "bị đánh giá" là hạng D (trong thang điểm A, B, C, D). Ghê chưa! Nhìn xung quanh sao người ta ai cũng giỏi, ai cũng hay quá, thế là mình hạ quyết tâm học cho bằng được. Trong lúc người ta còn ngủ, mình phải dậy sớm học tiếng Anh; trong lúc người ta nghỉ trưa, mình học tiếng Anh; và trong lúc người ta đi xem phim tối, mình học tiếng Anh. Trong vòng 6 tháng như vậy thì mình đã tự tin ra hẳn, nói được và nghe được. Từ đó, mình cảm thấy tiếng Anh là một thứ gì đó không thể thiếu hằng ngày. Mình có thể đọc sách tiếng Anh, xem phim tiếng Anh, học khoá học tiếng Anh, đi meetup nói tiếng Anh, vân vân. Vậy là khi thành thạo nó thì bây giờ nó trở thành công cụ giúp mình tiếp nhận rất nhiều thông tin, học hỏi được nhiều thứ, và "enjoy" cuộc sống nhiều hơn.

      Trong môi trường sử dụng tiếng Anh để giao tiếp, nếu bạn có tiếng Anh tốt thì bạn mới giao tiếp tốt. Ngôn ngữ cũng giống như protocol trong phần mềm. Bạn phải hiểu và sử dụng đúng protocol thì hệ thống mới hoạt động đúng. Bạn giỏi tiếng Anh, bạn tự tin khi giao tiếp với khách hàng, bạn tự tin viết tài liệu, bạn tư tin xông pha học cái mới, bạn tự tin khi thuyết trình, vân vân. Bạn sẽ được giao nhiều việc quan trọng và mang lại nhiều giá trị cho công ty. Như vậy, vì cái "dich vụ" của bạn quá tốt, chắc chắn bạn phải thoả thuận được "giá cao". :)

      Delete

Post a Comment

Popular posts from this blog

[Snippet] CSS - Child element overlap parent

I searched from somewhere and found that a lot of people says a basic concept for implementing this feature looks like below: HTML code: <div id="parent">  <div id="child">  </div> </div> And, CSS: #parent{   position: relative;   overflow:hidden; } #child{   position: absolute;   top: -1;   right: -1px; } However, I had a lot of grand-parents in my case and the above code didn't work. Therefore, I needed an alternative. I presumed that my app uses Boostrap and AngularJs, maybe some CSS from them affects mine. I didn't know exactly the problem, but I believed when all CSS is loaded into my browser, I could completely handle it. www.tom-collinson.com I tried to create an example to investigated this problem by Fiddle . Accidentally, I just changed: position: parent; to position: static; for one of parents -> the problem is solved. Look at my code: <div class="modal-body dn-placeholder-parent-positi...

Attribute 'for' of label component with id xxxx is not defined

I got the warning in the log file when I have used the tag <h:outputLabel> without attribute " for " in xhtml file. It was really polluting my server log files. The logged information actually makes sense anyway! We could find an answer as the following: "Having h:outputLabel without a "for" attribute is meaningless. If you are not attaching the label, you should be using h:outputText instead of h:outputLabel." However, these solutions are not possible just for my situation. Instead of using h:outputText for only displaying text, my team has used h:outputLabel too many places. We were nearly in our release time (next day) so it is quite risky and takes much efforts if we try to correct it. Because the style (with CSS) is already done with h:ouputLabel . The alternative by adding attribute " for " the existing h:outputLabel is not reasonable either. I really need to find another solution. Fortunately, I came across a way if I cha...

Sharing a virtualenv across several Python projects using Pipenv

There is a standard library for all projects in Python. However, several projects don’t always have the same dependencies all the time. That is where virtual environments come to play. You can follow this official document to use two separated tools  virtualenv and pip to  fulfill that need. My preferred alternative is to use pipenv . Pipenv is easy to use and convenient. The following are my steps to make a shared virtualenv for my all projects which requires the same dependencies. Step 1. Create an isolated virtualenv. python -m venv my-shared-env Step 2. Create a symbolic link to the created virtualenv. cd project_1 ln -s ~/.local/share/virtualenvs/my-shared-env .venv I have encountered the following issue at step 1. FileNotFoundError: [Errno 2] No such file or directory: '{my_project_path}/.venv/bin/pip': '{my_project_path}/.venv/bin/pip' The root cause was I tried to create virtualenv by running pipenv install and renaming the generated virtualenv to ...

Automating deployment and managing apps on OpenShift

Previously, we maintained OpenShift templates for deploying apps in development environments as well as delivering these templates to our customers for their on-prem deployment. Customers who refer to our templates (as well as documentation) have their own configuration management tools to automate the deployment such as ArgoCD and FluxCD. My son's buildings Our developers usually modify templates (YAML) directly on OpenShift for testing and then adjust the corresponding templates stored in the Git repository in Bitbucket. This sometimes causes an issue that delivered templates are incorrect because: - Developers forget to update the templates in Git repositories. - Developers don’t test the templates Therefore, our goal was to integrate a tool into our CI/CD that can automate and manage the configuration of OpenShift apps. The delivered templates should be the ones that are able to run on our OpenShift with the following purposes: - Automate deployment from templated in Git repos...

Climbing Fansipan – Highest Peak of Indochina

Fansipan is a mountain in Vietnam, the highest in Indochina, at 3,143 metres . It is located in the Lào Cai Province of the Northwest region of Vietnam, 9 km southwest of Sa Pa Township in the Hoang Lien Son mountain range. Wikipedia Currently you can get the peak by cable car; however, I loved to explore it by climbing. Here are what I have learned from this exciting journey. 💪 Do not procrastinate I have had no experience of climbing a high mountain before. Then, I've sought advice from my friends, but they suggested that I should not make it at that time due to bad weather and lack of experience. I know it never come true unless I just make my decision. Can't wait! Prepare for your journey You firstly need getting to know about the journey, schedule, transportation, etc. Recommended sources: YouTube videos, blog posts and tour companies websites. Tips - Quality hiking shoes helps a lot - Bring your stuffs as light as possible. Important stuffs...