source

Chrome이 잘못된 MIME 유형으로 인해 AJAX 스크립트 실행을 거부함

nicesource 2023. 2. 10. 22:03
반응형

Chrome이 잘못된 MIME 유형으로 인해 AJAX 스크립트 실행을 거부함

AJAX를 통해 JSON으로 스크립트에 접속하려고 합니다.Safari 등의 브라우저에서는 정상적으로 동작하지만 Chrome에서는 실행할 수 없습니다.다음의 에러가 표시됩니다.

해당 MIME 유형('응용 프로그램/json')을 실행할 수 없고 엄격한 MIME 유형 검사가 사용 가능하므로 '*'에서 스크립트 실행을 거부했습니다.

요청은 다음과 같습니다.

$.ajax({
    url: "http://some_url/test.json?callback=?",
    type: "GET",
    dataType: 'json',
    cache: true,
    success: function (data, status, error) {
      console.log('success', data);
    },
    error: function (data, status, error) {
      console.log('error', data, status, error);
    }
});

이 문제에 대한 해결 방법이 있는 사람 있습니까?

callback 인수를 추가하면 XMLHttpRequest를 사용하여 JSON에 대한 요구가 아닌 스크립트 요소를 사용하여 JSONP에 대한 요구를 작성하도록 jQuery에 지시합니다.

JSONP는 JSON이 아닙니다.JavaScript 프로그램입니다.

JSONP의 올바른 MIME 유형을 출력하도록 서버를 변경합니다.application/javascript.

(그동안 JSON을 기대하고 있다는 것을 jQuery에게 알리지 마십시오.그것은 모순됩니다.dataType: 'jsonp').

프록시 서버 또는 컨테이너가 .js 파일을 제공할 때 다음 헤더를 추가하면 Chrome 등의 일부 브라우저가 MIME 유형을 엄격하게 검사하도록 강제됩니다.

X-Content-Type-Options: nosniff

Chrome이 MIME 검사를 수행하지 못하도록 하려면 이 헤더를 제거하십시오.

참고로 Chrome 콘솔에서 동일한 오류가 발생했습니다.AJAX 함수가 원인인 줄 알았지만, 나는 내 최소화된 스크립트를 수정하지 않았다./javascripts/ajax-vanilla.min.js로./javascripts/ajax-vanilla.js하지만 실제로는 소스 파일이/javascripts/src/ajax-vanilla.js따라서 Chrome에서는 파일을 찾을 수 없어도 MIME 타입의 에러가 발생합니다.이 경우 오류 메시지는 다음과 같습니다.text/plainMIME 타입이 잘못되었습니다.

레코드Google 검색 사용자의 경우 사용자일 경우.NET Core 개발자는 content-type을 수동으로 설정해야 합니다.기본값은 null 또는 empty이기 때문입니다.

var provider = new FileExtensionContentTypeProvider();
app.UseStaticFiles(new StaticFileOptions
{
    ContentTypeProvider = provider
});

커스텀 404 에러 페이지에서 IIS 7.0 을 사용했을 때에 이 에러가 발생했습니다만, 이 에러는 임의의 404 페이지에서도 발생할 것으로 생각됩니다.서버에서 올바르게 실행할 수 없는 텍스트/html mime 유형의 html 404 응답을 반환했습니다.

저 같은 경우에는

$.getJSON(url, function(json) { ... });

(Flickr의 API에) 요청을 하면 동일한 MIME 오류가 발생합니다.위의 답변과 같이 다음 코드를 추가합니다.

$.ajaxSetup({ dataType: "jsonp" });

문제를 해결하여 Chrome 콘솔에 MIME 유형 오류가 표시되지 않게 되었습니다.

응용 프로그램이 IIS에서 호스트되는 경우 정적 컨텐츠가 설치되어 있는지 확인하십시오.[컨트롤 패널]> [프로그램]> [Windows 기능 온/오프]> [인터넷 인포메이션 서비스]> [World Wide Web Services]> [ Common HTTP Features ]> [ Static Content ]의 순서로 선택합니다.

새로운 IIS 10.0 설치에서 기존 응용 프로그램을 실행하려고 할 때 이 문제가 발생하였습니다.

언급URL : https://stackoverflow.com/questions/24528211/chrome-refuses-to-execute-an-ajax-script-due-to-wrong-mime-type

반응형