You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从jp.naiuma.com访问naiuma.com的Media文件夹图片?

解决跨域名媒体文件访问问题

核心思路

将媒体文件的URL从相对路径改为主域名的绝对路径,同时配置主域名允许子域名跨域请求资源,让子域名页面能直接加载主域名存储的图片。

具体步骤

1. 修改MEDIA_URL为绝对路径

在项目的settings.py中,把原相对路径的MEDIA_URL替换为主域名的完整路径:

BASE_DIR = Path(__file__).resolve().parent.parent
MEDIA_URL = 'https://naiuma.com/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

修改后,models.ImageField生成的图片URL会直接指向主域名的媒体文件,子域名页面加载时会自动向主域名请求图片资源。

2. 配置跨域访问权限

子域名jp.naiuma.com请求主域名资源属于跨域操作,需要主域名的Django服务允许跨域请求。推荐使用django-cors-headers库快速实现:

  • 先安装依赖库:
    pip install django-cors-headers
    
  • 在settings.py中添加配置:
    # 将corsheaders加入INSTALLED_APPS
    INSTALLED_APPS = [
        ...
        'corsheaders',
        ...
    ]
    
    # 加入中间件(注意顺序,需放在CommonMiddleware之前)
    MIDDLEWARE = [
        ...
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.common.CommonMiddleware',
        ...
    ]
    
    # 明确允许子域名跨域请求
    CORS_ALLOWED_ORIGINS = [
        "https://jp.naiuma.com",
    ]
    
    # 如果需要允许所有naiuma.com的子域名,可改用正则匹配
    # CORS_ALLOWED_ORIGIN_REGEXES = [
    #     r"^https://.*\.naiuma\.com$",
    # ]
    

3. 测试验证

重启Django服务后,在jp.naiuma.com的页面中加载图片:

  • 检查浏览器控制台是否存在跨域错误
  • 查看图片的请求URL是否为https://naiuma.com/media/xxx格式
  • 确认图片能正常显示即配置成功

内容的提问来源于stack exchange,提问作者this_is_a_person

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:50:10