Django 瀏覽器報錯 MIME 類型(“text/html”)不匹配(X-Content-Type-Options: nosniff)

 

  1. 問題描述
    Django設置 DEBUG=False後,訪問前端報錯 MIME 類型(“text/html”)不匹配(X-Content-Type-Options: nosniff)
    所有 css 和 js 文件都無法訪問,後臺顯示404在這裏插入圖片描述在這裏插入圖片描述
  2. 問題分析
    出現的問題根本原因是:當我們在開發django應用時如果設置了 DEBUG = True,那麼django便會自動幫我們對靜態文件進行路由;但是當我們設置DEBUG = False後,這一功能便沒有了,此時靜態文件就會出現加載失敗的情況,想要讓靜態文件正常顯示,我們就需要配置靜態文件服務了。參考官方文檔https://docs.djangoproject.com/en/2.0/howto/static-files/

  3. 解決方式

    首先修改App setting.py文件

    STATIC_URL = '/static/'
    STATIC_ROOT = 'static' ## 新增行
    STATICFILES_DIRS = [
      os.path.join(BASE_DIR, 'static'), # DEBUG=False時,註釋掉就行
    ]

    修改urls.py

    from django.views import static ##新增
    from django.conf import settings ##新增
    from django.conf.urls import url ##新增
    
    
    urlpatterns = [
      path('', include('user.urls')),  
     ## 以下是新增
      url(r'^static/(?P<path>.*)$', static.serve,
          {'document_root': settings.STATIC_ROOT}, name='static'),
    ]

    在我的項目中,按上面方法修改完還是前端還是報錯,解決方法如下:

    在settings.py同級__init__.py文件內添加以下代碼
    
    import mimetypes
    mimetypes.add_type("text/css", ".css", True)
    mimetypes.add_type("text/javascript", ".js", True)

     

  4. 總結

    DEBUG = True
    
    # setting
    DEBUG = True
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
    ]

     

    DEBUG = False
    
    # setting
    DEBUG = False
    STATIC_ROOT = 'static' ## 新增行
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'), #註釋掉, 不然會報錯
    ]
    
    
    
    在settings.py同級__init__.py文件內添加以下代碼
    
    import mimetypes
    mimetypes.add_type("text/css", ".css", True)
    mimetypes.add_type("text/javascript", ".js", True)

     

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章