mirror of
https://github.com/withastro/astro.git
synced 2024-12-16 21:46:22 -05:00
fix: properly prefix endpoint path with base in SSR (#7047)
* fix: properly prefix endpoint path with base in SSR * chore: sssss * chore: changeset
This commit is contained in:
parent
10e34b6d71
commit
48395c8152
3 changed files with 28 additions and 1 deletions
5
.changeset/clean-carpets-battle.md
Normal file
5
.changeset/clean-carpets-battle.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'astro': patch
|
||||
---
|
||||
|
||||
Fix `/_image` endpoint not being prefixed with the `base` path in build SSR
|
|
@ -1,4 +1,5 @@
|
|||
import { AstroError, AstroErrorData } from '../../core/errors/index.js';
|
||||
import { joinPaths } from '../../core/path.js';
|
||||
import { VALID_OPTIMIZABLE_FORMATS } from '../consts.js';
|
||||
import { isESMImportedImage } from '../internal.js';
|
||||
import type { ImageOutputFormat, ImageTransform } from '../types.js';
|
||||
|
@ -195,7 +196,7 @@ export const baseService: Omit<LocalImageService, 'transform'> = {
|
|||
options.quality && searchParams.append('q', options.quality.toString());
|
||||
options.format && searchParams.append('f', options.format);
|
||||
|
||||
return '/_image?' + searchParams;
|
||||
return joinPaths(import.meta.env.BASE_URL, '/_image?') + searchParams;
|
||||
},
|
||||
parseURL(url) {
|
||||
const params = url.searchParams;
|
||||
|
|
|
@ -447,6 +447,27 @@ describe('astro:image', () => {
|
|||
expect(src.length).to.be.greaterThan(0);
|
||||
expect(src.startsWith('/blog')).to.be.true;
|
||||
});
|
||||
|
||||
it('has base path prefix in SSR', async () => {
|
||||
const fixtureWithBase = await loadFixture({
|
||||
root: './fixtures/core-image-ssr/',
|
||||
output: 'server',
|
||||
adapter: testAdapter(),
|
||||
experimental: {
|
||||
assets: true,
|
||||
},
|
||||
base: '/blog',
|
||||
});
|
||||
await fixtureWithBase.build();
|
||||
const app = await fixtureWithBase.loadTestAdapterApp();
|
||||
const request = new Request('http://example.com/blog/');
|
||||
const response = await app.render(request);
|
||||
expect(response.status).to.equal(200);
|
||||
const html = await response.text();
|
||||
const $ = cheerio.load(html);
|
||||
const src = $('#local img').attr('src');
|
||||
expect(src.startsWith('/blog')).to.be.true;
|
||||
});
|
||||
});
|
||||
|
||||
describe('build ssg', () => {
|
||||
|
|
Loading…
Reference in a new issue