fix(scraping): corriger les 403 sur les images avec protection anti-hotlink
- Ajouter le header Referer (origin de l'image) dans ImageDownloader pour les téléchargements backend - Ajouter referrerpolicy="no-referrer" sur les <img> de la modale de test pour les previews navigateur
This commit is contained in:
parent
01474c264b
commit
874003eb35
@@ -86,6 +86,7 @@
|
|||||||
:src="imageUrl"
|
:src="imageUrl"
|
||||||
:alt="`Image ${index + 1}`"
|
:alt="`Image ${index + 1}`"
|
||||||
class="w-full h-32 object-cover border border-gray-200 dark:border-gray-600"
|
class="w-full h-32 object-cover border border-gray-200 dark:border-gray-600"
|
||||||
|
referrerpolicy="no-referrer"
|
||||||
@error="handleImageError"
|
@error="handleImageError"
|
||||||
@load="handleImageLoad" />
|
@load="handleImageLoad" />
|
||||||
<div class="absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-30 transition-opacity flex items-center justify-center">
|
<div class="absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-30 transition-opacity flex items-center justify-center">
|
||||||
@@ -278,6 +279,11 @@ const handleTest = async ({ configuration, testData }) => {
|
|||||||
testResults.value = {};
|
testResults.value = {};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Persister testSlug + testChapterNumber avant de lancer le test
|
||||||
|
if (isEditing.value) {
|
||||||
|
await contentSourceStore.updateSource(route.params.id, configuration);
|
||||||
|
}
|
||||||
|
|
||||||
// Préparer les données selon le format de l'API
|
// Préparer les données selon le format de l'API
|
||||||
const testConfiguration = {
|
const testConfiguration = {
|
||||||
baseUrl: configuration.baseUrl,
|
baseUrl: configuration.baseUrl,
|
||||||
|
|||||||
@@ -20,7 +20,14 @@ readonly class ImageDownloader implements ImageDownloaderInterface
|
|||||||
|
|
||||||
public function download(string $url, string $destination): void
|
public function download(string $url, string $destination): void
|
||||||
{
|
{
|
||||||
$response = $this->httpClient->request('GET', $url);
|
$urlParts = parse_url($url);
|
||||||
|
$referer = ($urlParts['scheme'] ?? 'https') . '://' . ($urlParts['host'] ?? '');
|
||||||
|
|
||||||
|
$response = $this->httpClient->request('GET', $url, [
|
||||||
|
'headers' => [
|
||||||
|
'Referer' => $referer,
|
||||||
|
],
|
||||||
|
]);
|
||||||
$contentType = $response->getHeaders()['content-type'][0] ?? '';
|
$contentType = $response->getHeaders()['content-type'][0] ?? '';
|
||||||
|
|
||||||
if (!str_starts_with($contentType, 'image/')) {
|
if (!str_starts_with($contentType, 'image/')) {
|
||||||
|
|||||||
Reference in New Issue
Block a user