MIME 유형 불일치로 인해 리소스가 차단됨 (X-Content-Type-Options : nosniff)


90

JavaScript 및 HTML을 사용하여 웹 페이지를 개발 중입니다. HTML 페이지에서 다음 오류 목록을 받았을 때 모든 것이 잘 작동했습니다.

The resource from “https://raw.githubusercontent.com/dataarts/dat.gui/master/build/dat.gui.min.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/CanvasRenderer.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/Projector.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).

이러한 오류는 자동 브라우저 업데이트 (Mozilla Firefox) 후에 나타 났으며 설정에서 변경된 것일 수 있습니다. 이 문제를 해결할 방법을 알고 있습니까?


10
GitHub에서 파일을로드하지 마십시오. 대신 CDN을 사용하십시오.
SLaks

답변:


72

파일 경로가 정확하고 파일이 존재하는지 확인하십시오. 제 경우에는 문제가있었습니다. 제가 고쳤을 때 오류가 사라졌습니다.


나는 또한 같은 문제에 직면하고 있으며 파일도 pub 디렉토리에 없습니다. 어떻게해야합니까? 사용자 정의 테마 파일입니다.
saiid

@SaiidatRLTSquare 파일이 존재하지 않는 경우 어딘가에서 찾아서 거기에 넣어야합니다. 또는 해당 파일이 중요하지 않은 경우 파일이 포함 된 줄을 제거하거나 빈 파일을 생성하면 오류가 발생하지 않습니다
dav

Passenger를 Node와 함께 사용하면 빌드 경로가 중단되어 경로를 업데이트하여 문제가 해결되었습니다. 감사합니다!
Aaron Belchamber

28

URL을 변경하면 문제를 해결할 수 있습니다. 예 :

https://raw.githubusercontent.com/svnpenn/bm/master/yt-dl/yt-dl.js
Content-Type: text/plain; charset=utf-8

좋은 예 :

https://cdn.rawgit.com/svnpenn/bm/master/yt-dl/yt-dl.js
content-type: application/javascript;charset=utf-8

rawgit.com 은 github 용 캐싱 프록시 서비스입니다. 거기에 가서 원래 raw.githubusercontent.com URL에 해당하는 URL을 대화식으로 파생시킬 수도 있습니다 . FAQ 보기


3
빨간색 깜박임에 raw.githubusercontent.com의해 대체되는 cdn.rawgit.com올바른 MIME 타입으로 응답하는.
Axel Guilmin

내 생명을 구했습니다. 감사합니다!!
Megan Byers

rawgit이 종료됩니다. - 다음과 같은 대답에 설명 된대로 jsdeliver 사용할 수 있습니다 stackoverflow.com/a/64456518/9640177
mayank1513

14

devops 팀이 .NET Framework를 추가하여 웹 서버 구성을 변경 한 후 프로덕션에서이 오류가 발생하기 시작했습니다 X-Content-Type-Options: nosniff. 이로 인해 브라우저는 content-type응답 헤더의 매개 변수 에서 언급 한대로 리소스를 해석해야했습니다 .

이제 처음부터 애플리케이션 서버는 js 파일의 콘텐츠 유형을 text/plain. X-Content-Type-Options: nosniff는 웹 서버에 설정되지 않았기 때문에 콘텐츠 유형이 text / plain으로 언급되었지만 브라우저는 js 파일을 JavaScript 파일로 자동 해석했습니다. 이를 MIME 스니핑이라고합니다. 이제 X-Content-Type-Options : nosniff를 설정 한 후 브라우저는 MIME 스니핑을 수행하지 않고 응답 헤더에 언급 된대로 콘텐츠 유형을 취해야합니다. 이로 인해 js 파일을 일반 텍스트 파일로 해석하고 실행을 거부하거나 차단했습니다. 오류에도 동일하게 표시됩니다.

해결책 : 서버 content-type가 JS 파일을 다음과 같이 설정하도록하는 것 입니다.

application/javascript;charset=utf-8

이렇게하면 모든 JS 파일이 정상적으로로드되고 문제가 해결됩니다.


내가 서버 내용 유형을 설정해야 할 경우, 나는 내가, 내가 8.5 서버 Tomcat을 사용하고 유지해야하는 파일을 의미
Bhaskara Arani

그것은 모두 애플리케이션 아키텍처에 달려 있습니다. 우리의 경우, 그것은 평범한 오래된 서블릿 기반 모놀리스 애플리케이션이었습니다. 따라서 서비스 방법에서 바로 설정되었습니다.
Manish Bansal

대신 HTML을 변경하는 것은 어떻습니까?
Aaron Franke 19

죄송합니다. 나는 당신을 이해하지 못했습니다. 여기에는 html이 없었습니다. 서블릿 기반 애플리케이션이있었습니다. html에서 어떤 변화를 제안하고 있습니까?
Manish Bansal


6

Express를 사용하고 있습니까?

경로를 확인하십시오 ( // public / 뒤 의 " "에 유의하십시오 ) :

app.use(express.static(__dirname + "/public/"));

// 참고 : 위에 이미 포함되어 있으므로 "css"앞에 "/"가 필요하지 않습니다.

rel="stylesheet" href="css/style.css

도움이 되었기를 바랍니다


5

Wordpress 용

제 경우에는 get_template_directory_uri () 뒤에 슬래시 "/"를 놓쳤으므로 결과 / 생성 된 경로가 잘못되었습니다.

My Wrong code :

wp_enqueue_script( 'retina-js', get_template_directory_uri().'js/retina.min.js' ); 

내 수정 된 코드 :

wp_enqueue_script( 'retina-js', get_template_directory_uri().'/js/retina.min.js' );

3

브라우저가 파일에 액세스 할 수 없기 때문일 수 있습니다. node.js로 응용 프로그램을 만들 때 이러한 유형의 오류가 발생했습니다. 스크립트 파일 (URL 복사 및 붙여 넣기)을 직접 요청하고 검색 할 수 있는지 확인할 수 있습니다. 그러면 진짜 문제가 무엇인지 알 수 있습니다. 파일이있는 폴더의 권한 때문이거나 브라우저가 잘못된 경로로 인해 파일을 찾을 수 없기 때문일 수 있습니다. node.js에서 파일에 대한 경로를 지정한 후 모두 작동합니다.


이 MS 페이지 에 따르면 MIME 유형 문제인 것 같습니다. 그러나 MIMENode.js에서 유형을 어떻게 지정 합니까? (하나는 아니,하지만 자산 디렉토리에 모든 파일에 대한 전체 경로를 지정할 필요가 없습니다해야합니까?)
not2qubit

3

잘못된 경로 일 수 있습니다. 기본 앱 파일에 다음이 있는지 확인하십시오.

app.use(express.static(path.join(__dirname,"public")));

CSS에 대한 예제 링크 :

<link href="/css/clean-blog.min.css" rel="stylesheet">

js 파일에 대한 링크와 유사합니다.

<script src="/js/clean-blog.min.js"></script>

2

js 파일의 문자 집합을 BOM이없는 UTF-8에서 메모장 ++의 간단한 UTF-8로 변경하여이 문제를 해결했습니다.


1

Azure Storage를 정적 웹 사이트로 사용할 때이 오류가 발생했습니다. 복사 된 js 파일의 콘텐츠 형식은 다음 text/plain; charset=utf-8과 같 으며 콘텐츠 형식을 다음 과 같이 변경했습니다.application/javascript

작동하기 시작했습니다.


0

HTTPS 및 HTTP 프로토콜은 참조

때때로 혼합 프로토콜을 사용하는 경우 [이것은 주로 JSONP 콜백에서 발생 함]이 오류가 발생할 수 있습니다.

웹 페이지와 리소스 페이지의 HTTP 프로토콜이 동일한 지 확인하십시오.


0

나는 또한 django 서버 에서이 같은 문제에 직면 해 있습니다. 그래서 settings.py 파일에서 DEBUG = True를 변경했습니다.


0

잘못된 태그로 나에게 일어났습니다. 실수로 link태그에 js 파일을 추가했습니다 .

예 : (잘못된 사람)

<link rel="stylesheet" href="plugins/timepicker/bootstrap-timepicker.min.js">

에 대한 올바른 태그를 사용하여 해결되었습니다 javascript. 예:

<script src="plugins/timepicker/bootstrap-timepicker.min.js"></script>

0

https://cdn.rawgit.com 이 종료됩니다. 따라서 대체 옵션 중 하나를 사용할 수 있습니다. JSDeliver는 사용할 수있는 무료 CDN입니다.

// 모든 GitHub 릴리스, 커밋 또는 분기로드

// 참고 : 지원하는 프로젝트에는 npm을 사용하는 것이 좋습니다.

https://cdn.jsdelivr.net/gh/user/repo@version/file

// jQuery v3.2.1로드

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/dist/jquery.min.js

// 특정 버전 대신 버전 범위 사용

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2/dist/jquery.min.js

https://cdn.jsdelivr.net/gh/jquery/jquery@3/dist/jquery.min.js

// 최신 버전을 얻으려면 버전을 완전히 생략

// 프로덕션에서 사용해서는 안됩니다.

https://cdn.jsdelivr.net/gh/jquery/jquery/dist/jquery.min.js

// 축소 된 버전을 얻기 위해 JS / CSS 파일에 ".min"을 추가합니다.

// 존재하지 않는 경우 생성합니다.

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/src/core.min.js

// 디렉토리 목록을 얻기 위해 끝에 /를 추가합니다.

https://cdn.jsdelivr.net/gh/jquery/jquery/

ref- https: //www.jsdelivr.com/?docs= gh

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.