Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert an IRI path to URI before setting as NGINX header #5024

Merged
merged 1 commit into from Jan 10, 2019

Conversation

@humitos
Copy link
Member

@humitos humitos commented Dec 20, 2018

Filepath can contains non-ASCII characters, so we need to convert to a valid URI before setting it as X-Accel-Redirec NGINX header because only ASCII characters are supported.

References,

Closes readthedocs/readthedocs-corporate#409

NOTE: I didn't test this locally because I don't have the setup needed (gunicorn + nginx) properly configured. So, we will need to be careful when deploying this into production.

One example of what this fixes is,

In [1]: from django.utils.encoding import iri_to_uri                                                                                                                                          

In [2]: iri_to_uri('camión.html')                                                                                                                                                             
Out[2]: 'cami%C3%B3n.html'
@humitos humitos requested a review from Dec 20, 2018
@humitos
Copy link
Member Author

@humitos humitos commented Dec 26, 2018

Test in py2.7 failed because git doesn't recognize --prune-tags :/

@humitos humitos added this to the 2.9 milestone Dec 26, 2018
@stsewd
Copy link
Member

@stsewd stsewd commented Dec 26, 2018

@humitos ^ wrong PR I guess? 😆

@humitos
Copy link
Member Author

@humitos humitos commented Dec 27, 2018

Nope. It was failing, but I re-triggered the test and it passed 🤷‍♂️

@agjohnson
Copy link
Contributor

@agjohnson agjohnson commented Jan 2, 2019

Is it worth adding a test here? I assume we already have tests for the send file header that should pass, but if not, that would be good to verify before/after this patch.

@humitos humitos force-pushed the humitos/nginx/encode-iri-filepath branch from 6a17ec5 to 565ac55 Jan 3, 2019
@humitos
Copy link
Member Author

@humitos humitos commented Jan 3, 2019

Is it worth adding a test here?

Yes.

I assume we already have tests for the send file header that should pass

We did have tests, but of course none of them tested that Unicode was supported. I forget 100% to add a test here 😞

I just pushed a test for this and it's working 😄

@humitos humitos force-pushed the humitos/nginx/encode-iri-filepath branch from 565ac55 to b8e2048 Jan 7, 2019
Filepath can contains non-ASCII characters, so we need to convert to a
valid URI before setting it as X-Accel-Redirec NGINX header because
only ASCII characters are supported.

References,

* https://docs.djangoproject.com/en/1.11/ref/unicode/#uri-and-iri-handling
* benoitc/gunicorn#1448
@humitos humitos force-pushed the humitos/nginx/encode-iri-filepath branch from b8e2048 to adb5218 Jan 7, 2019
Copy link
Member

@ericholscher ericholscher left a comment

Looks good. 👍

@ericholscher ericholscher merged commit c2391c0 into master Jan 10, 2019
2 checks passed
@delete-merged-branch delete-merged-branch bot deleted the humitos/nginx/encode-iri-filepath branch Jan 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

4 participants