CSS 파일 차단: MIME 유형 불일치(X-Content-Type-Options:nosniff)
Angular 4 앱을 개발 중인데 글로벌 스타일을 적용하고 싶습니다.각도 사이트의 자습서를 따라 앱의 루트 디렉터리에 "styles.css" 파일을 만들었고, 앱의 인덱스.html에 있는 스타일시트를 참조하는 것입니다.
<link rel="stylesheet" type="text/css" href="styles.css">
각진 앱이 성공적으로 컴파일되었습니다.
$ ng serve
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200 **
[...]
webpack: Compiled successfully.
그러나 Chrome 브라우저에서 http://localhost:4200을 방문하면 콘솔에 오류가 표시됩니다.
GET http://localhost:4200/styles.css
Firefox 브라우저에서는 오류가 조금 더 명확하게 나타납니다.
GET
http://localhost:4200/styles.css [HTTP/1.1 404 Not Found 15ms]
The resource from "http://localhost:4200/styles.css" was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
index.html 파일과 styles.css 파일 모두 내 angular app의 root 디렉토리에 있습니다.문제에 대한 자세한 정보를 얻으려고 했습니다.
nosniff
Blocks a request if the requested type is
"style" and the MIME type is not "text/css", or
"script" and the MIME type is not a JavaScript MIME type.
를 왜안 갑니다. 왜냐하면 제가 명시했기 때문입니다.type="text/css"
스타일시트를 참조할 때.
저도 방금 같은 문제에 부딪혔어요.이는 "nodejs express cs mime type"을 검색한 웹의 히트 수로 판단할 때 몇 가지 다른 이유로 나타날 수 있는 Express의 quirk으로 보입니다.
그럼에도 불구하고type="text/css"
우리가 우리의 속성에 넣었습니다.<link
합니다, Express는 CSS합니다.
Content-Type: "text/html; charset=utf-8"
그것은 정말로 그것을 돌려줘야만 합니다.
Content-Type: "text/css"
rel=
변경,성
<link rel="stylesheet" type="text/css" href="styles.css">
로.
<link type="text/css" href="styles.css">
테스트 결과 CSS 파일이 다운로드 되어 스타일이 실제로 작동하는 것으로 확인되었으며, 그것은 제 목적에 충분했습니다.
도 했습니다.rel = "stylesheet"
는 더 . MIME .
일부 답변에서는 rel="stylesheet"을 삭제할 것을 제안했지만 저는 이를 해결하지 못했습니다.expressjs 문서에 따르면: https://expressjs.com/en/starter/static-files.html useexpress.static
CSS, 자바스크립트 등 정적 파일을 서비스하는 기능...
app.use(express.static('public'))
에 스타일 내부에 style., 입니다와 할 수 .{PROJECT_PATH}/public/css/
http://localhost:3000/css/style.css
효과가 있을 겁니다
(개발 중인) 전체 스택 웹 어플리케이션에 대해 동일한 종류의 문제가 발생함에 따라, 저는 단순히 css 파일을 렌더링된 페이지에 올바르게 연결하여 문제를 해결했습니다. 제거rel = stylesheet
과 같이,하지만, 해야 할 ..간단히 말해서 해결책이 아닙니다.
express-static
이를 예로 들 수 있습니다.
서버측:
app.use(express.static(__dirname + "/public", {
index: false,
immutable: true,
cacheControl: true,
maxAge: "30d"
}));
클라이언트 측:
<link type="text/css" rel="stylesheet" href="/main.css">
(html )을하면 됩니다.template engines
) express-static 를 합니다.
앵글 앱에서 자바스크립트 파일과 비슷한 문제가 있었습니다(CSS가 아닌).실제로 문제는 Mime 유형이 아니라 (외부 오류 메시지가 표시된 것처럼) "404 Not Found" 오류였습니다.
제 경우에는 스크립트 파일을 "assets" 폴더를 제외한 다른 곳에 두면 404가 발생하고 결국 마임 타입 오류가 발생했습니다.index.html의 헤드 섹션에는 다음 태그가 적용되었습니다.
<script src="assets/plugins/jquery.min.js" type="text/javascript"></script>
assets 폴더는 Index.html 파일의 형제입니다.
이것으로 문제가 해결되었습니다.
app.use('/public', express.static(path.join(__dirname, "public")));
간단한 해킹은 순방향 슬래시를 추가하는 것입니다./
사용된 스타일시트의 경로 앞에 위치합니다.저는 그랬습니다.href='css/style.css'
로 .href='/css/style.css'
매력적으로 작동했습니다.
저도 이런 문제가 있었습니다.
스크립트 파일을 다른 위치로 이동했는데 이제 오류가 없습니다.
<script src="./scripts/simple-keyboard/keyboard.index.min.js" type="text/html"></script>
.<script src="./scripts/keyboard.index.min.js" type="text/javascript"></script>
Davelli가 언급한 것처럼, 문제는 파일 불일치가 아니라 오류가 발견되지 않았습니다.잘못된 오류를 되돌렸다니 이상하네요!
이 솔루션이 도움이 되지 않는 경우:
app.use(express.static('public'))//for server
<link rel="stylesheet" href="/index.css">//for styles
그런 다음 루트 디렉터리에 "public" 폴더가 있는지 확인합니다.이건 제 경우에요.
저도 같은 문제에 직면해 있었습니다.하지만 저는 그것이 당신의 style.css 파일에 맞는 디렉토리를 사용하는 것과 관련이 있다는 것을 알게 되었습니다.그래서 아래 코드 라인을 시도해봤는데 완벽하게 작동했습니다.
<link rel="stylesheet" type="text/css" href="/app/scss/style.css">
제 경우에는 "css/style.css" 앞에 "/"만 포함합니다.
<link rel="stylesheet" href="css/styles.css" />
to
<link rel="stylesheet" href="/css/styles.css" />
express.static('public')도 사용합니다.
내게 도움이 되는 것 같았던 것이 변화하고 있었습니다.
<script type="text/javascript" src="/lib/matrix.js"></script>
로.
<script type="text/javascript" src="./lib/matrix.js"></script>
저도 이 문제에 부딪혔습니다.저는 키란쿠마르 곤티의 팁으로 문제를 해결할 수 있었습니다.
다음 줄을 사용합니다.
app.use('/public', express.static(path.join(__dirname, "public")));
Const Path를 설정해야 합니다.
또한 CSS 폴더가 공용 폴더 안에 중첩되어 있는지 확인하려고 합니다.
저도 이 문제에 부딪혔습니다.저는 키란쿠마르 곤티의 팁으로 문제를 해결할 수 있었습니다.
app.js 파일에서 다음 코드 라인을 사용했습니다. 공용 폴더는 없지만 css 폴더에 style.css를 저장했습니다.
app.use('/css', express.static(path.join(__dirname, "css")));
사용한 /css/style.css 파일:
<link rel="stylesheet" type="text/css" href="/css/style.css" />
아직도 이런 오류가 있는 사람들을 위해 저는 angular.json 파일에 "src/assets"를 포함시켜 해결할 수 있었습니다.
"assets": ["src/favicon.ico", "src/assets", "src/upload.php"]
또한 인덱스의 디렉토리입니다. html는 자산에 포함되지 않아야 합니다. 즉, "assets"에 "src"를 포함하지 않아야 합니다.
같은 문제에 부딪혔는데, 몇 번 둘러본 결과 전체 디렉토리가 아니라 특정 폴더 안의 파일만 참조하면 된다는 것을 알게 되었습니다.정적 내부의 공용 루트를 참조하는 경우 예제app.use(express.static(
일반의)) then you only need to ref
<link rel=stylesheet
href =css/styles.css
전체 디렉토리가 아닌 >.
VS Code + Live 서버 사용 중 "CSS 파일 차단: MIME 유형 불일치"
VS Code에서 Live Server(또는 대안)를 사용하여 테스트하는 동안 이 오류가 발생하면 실제로 VS Code 작업장 최상위 디렉터리 설정이 잘못되어 리소스에 연결할 수 없는 경우 확장자가 CSS 파일과 함께 잘못된 마임 유형을 보내는 것처럼 보일 수 있습니다.작업영역 루트가 실제 앱의 루트 dir 위에 있는 dir로 설정되어 있으면 코딩 시 VS Code에서 쉽게 눈에 띄지 않을 수 있지만 디버깅 시 리소스가 잘못 참조됩니다.
저의 경우 아래 코드 블록들을 역순으로 뒤섞어 놓았기 때문에 이런 오류가 발생했습니다.이 문제가 있는 경우 아래의 순서를 따르시면 도움이 될 것입니다.
1.
app.use(express.static(path.join(__dirname, 'public')));
2.
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'public/index.html'));
});
3.
app.use('/api', cors(corsOptions), indexRouter);
이것이 저에게 일어난 일입니다, 제 사이트가 아카이브되어서 CSS와 js 파일을 사용할 수 없습니다.웹 호스트를 복원하고 나면 모든 것이 잘 됩니다.
그래서 URL이 맞는지 확인 부탁드립니다.
언급URL : https://stackoverflow.com/questions/44657829/css-file-blocked-mime-type-mismatch-x-content-type-options-nosniff
'programing' 카테고리의 다른 글
ASP에 대한 IIS 사이트 이름을 가져옵니다.NET 웹사이트 (0) | 2023.10.15 |
---|---|
플러그인 없이 각도 4의 페이지 앵커까지 스크롤을 부드럽게 하는 방법은 무엇입니까? (0) | 2023.10.15 |
jquery validate를 사용할 수 있도록 부트스트랩 모달이 열려 있는지 확인하는 방법은 무엇입니까? (0) | 2023.10.10 |
점을 사용하여 팬더 데이터 프레임의 두 열을 표시하는 방법 (0) | 2023.10.10 |
Angular 간의 코드 재사용 방법JS 클라이언트 및 Node.js 서버 (0) | 2023.10.10 |