fix: incorrect Content-Disposition serialization (#31669)
* fix: incorrect Content-Disposition serialization * test: fixup test
This commit is contained in:
parent
31e877515c
commit
24b02d68a7
2 changed files with 5 additions and 3 deletions
|
@ -133,8 +133,10 @@ v8::Local<v8::Value> HttpResponseHeadersToV8(
|
||||||
net::HttpContentDisposition header(value, std::string());
|
net::HttpContentDisposition header(value, std::string());
|
||||||
std::string decodedFilename =
|
std::string decodedFilename =
|
||||||
header.is_attachment() ? " attachment" : " inline";
|
header.is_attachment() ? " attachment" : " inline";
|
||||||
decodedFilename += "; filename=" + header.filename();
|
// The filename must be encased in double quotes for serialization
|
||||||
value = decodedFilename;
|
// to happen correctly.
|
||||||
|
std::string filename = "\"" + header.filename() + "\"";
|
||||||
|
value = decodedFilename + "; filename=" + filename;
|
||||||
}
|
}
|
||||||
if (!values)
|
if (!values)
|
||||||
values = response_headers.SetKey(key, base::ListValue());
|
values = response_headers.SetKey(key, base::ListValue());
|
||||||
|
|
|
@ -354,7 +354,7 @@ describe('webRequest module', () => {
|
||||||
|
|
||||||
it('does not change content-disposition header by default', async () => {
|
it('does not change content-disposition header by default', async () => {
|
||||||
ses.webRequest.onHeadersReceived((details, callback) => {
|
ses.webRequest.onHeadersReceived((details, callback) => {
|
||||||
expect(details.responseHeaders!['content-disposition']).to.deep.equal([' attachment; filename=aa中aa.txt']);
|
expect(details.responseHeaders!['content-disposition']).to.deep.equal([' attachment; filename="aa中aa.txt"']);
|
||||||
callback({});
|
callback({});
|
||||||
});
|
});
|
||||||
const { data, headers } = await ajax(defaultURL + 'contentDisposition');
|
const { data, headers } = await ajax(defaultURL + 'contentDisposition');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue