Django-Reactjs : На запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin
Я пытаюсь загрузить изображение из url и попытаться обрезать это изображение.
Доступ к изображению по адресу 'https://example.com/image.png' из источника 'http://127.0.0.1:8000' был заблокирован политикой CORS: На запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'.
Я использую React и Django.
app.js
import { useState,useCallback,useRef, useEffect} from 'react';
import React, { Component } from "react";
import ReactCrop from "react-image-crop";
import 'react-image-crop/dist/ReactCrop.css'
function App() {
const [crop, setCrop] = useState({ aspect: 1.7777777777777777,
height: 84.92083740234375,
unit: "px",
width: 325.97037760416663,
x: 0,
y: 140.07916259765625}
);
function onImageLoad() {
const image = new Image();
image.src = "https://example.com/image.png";
image.crossOrigin = "Anonymous";
const canvas = document.createElement('canvas');
const scaleX = image.naturalWidth / image.width;
const scaleY = image.naturalHeight / image.height;
const ctx = canvas.getContext('2d');
const pixelRatio = window.devicePixelRatio;
canvas.width = crop.width * pixelRatio * scaleX;
canvas.height = crop.height * pixelRatio * scaleY;
ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
ctx.imageSmoothingQuality = 'high';
image.onload = function() {
ctx.drawImage(
image,
crop.x * scaleX,
crop.y * scaleY,
crop.width * scaleX,
crop.height * scaleY,
0,
0,
crop.width * scaleX,
crop.height * scaleY
);
}
const base64Image = canvas.toDataURL("image/jpeg", 1);
setResult(base64Image);
console.log(result);
}
useEffect(() => {
onImageLoad();
}, []);
return (
{
result &&
<div>
<h2>Cropped Image</h2>
<img
alt="Cropped Image"
src={result}
crossorigin="anonymous"
style={{
width: Math.round(crop?.width ?? 0),
height: Math.round(crop?.height ?? 0)
}}
/>
</div>
}
)
}
export default App;
settings.py
объявил все, что требовалось для CORS заголовков, но результата нет.
Может ли кто-нибудь помочь мне с этим?
Думаю, что добавление конечной точки изображения в CORS_ALLOWED_ORIGINS поможет решить проблему.
CORS_ALLOWED_ORIGINS = ["http://127.0.0.1:8000","http://localhost:8000","https://example.com/image.png"]
Также убедитесь, что если вы используете env, то добавьте конечную точку в ALLOWDED HOST в env.