태그 보관물: json

json

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

AJAX를 통해 JSON으로 스크립트에 액세스하려고합니다 .AJAX는 Safari 및 기타 브라우저에서 잘 작동하지만 불행히도 Chrome에서는 실행되지 않습니다. 다음과 같은 오류가 발생합니다.

MIME 유형 ( ‘application / 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);
    }
});

누구든지 이것에 대한 해결 방법이 있습니까?



답변

콜백 인수를 추가하면 jQuery에 XMLHttpRequest를 사용하는 JSON 요청 대신 스크립트 요소를 사용하여 JSONP를 요청한다고 알립니다.

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

JSONP에 적합한 MIME 유형을 출력하도록 서버를 변경하십시오 application/javascript.

(당신이 그것에있는 동안 jQuery에게 JSON을 기대한다고 말하지 마십시오 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/plain잘못된 MIME 유형으로 설명됩니다 .


답변

IIS 7.0을 사용자 지정 404 오류 페이지와 함께 사용하면이 오류가 발생했지만 404 페이지에서이 오류가 발생한다고 생각합니다. 서버는 text / html mime 유형을 가진 html 404 응답을 (올바르게) 실행할 수없는 것으로 반환했습니다.


답변

레코드 및 Google 검색 사용자 의 경우 .NET Core 개발자 인 경우 기본값이 null이거나 비어 있으므로 컨텐츠 유형을 수동으로 설정해야합니다.

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

답변

내 경우에는

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

Flickr의 API에 대한 요청을하기 위해 동일한 MIME 오류가 발생했습니다. 위의 제안과 같이 다음 코드를 추가하십시오.

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

문제를 해결하고 더 이상 Chrome 콘솔에 MIME 유형 오류가 표시되지 않습니다.


답변

응용 프로그램이 IIS에서 호스팅되는 경우 정적 콘텐츠가 설치되어 있는지 확인하십시오. 제어판> 프로그램> Windows 기능 설정 또는 해제> 인터넷 정보 서비스> 월드 와이드 웹 서비스> 공통 HTTP 기능> 정적 컨텐츠.

새 IIS 10.0 설치에서 기존 응용 프로그램을 실행하려고 할 때이 문제에 직면했습니다.