질문자 :Oli
나는 한동안 JSON 을 가지고 놀았고, 그것을 텍스트로 밀어냈고 그것은 (내가 아는) 누구에게도 해를 끼치지 않았지만, 나는 일을 제대로 시작하고 싶습니다.
JSON 콘텐츠 유형에 대해 알려진 "표준"을 너무 많이 보았습니다.
application/json application/x-javascript text/javascript text/x-javascript text/x-json
그러나 어느 것이 정확합니까, 아니면 가장 좋습니까? 보안 및 브라우저 지원 문제가 서로 다르다는 것을 알게 되었습니다.
JSON이 REST API에서 반환되는 경우 비슷한 질문이 있다는 것을 알고 있습니다. , 하지만 조금 더 목표가 있는 답변을 원합니다.
답변자 : Gumbo
JSON 텍스트의 경우:
application/json
JSON 텍스트의 MIME 미디어 유형은 application/json
입니다. 기본 인코딩은 UTF-8입니다. (출처: RFC 4627 )
콜백이 있는 JSONP (실행 가능한 JavaScript)의 경우:
application/javascript
관련 댓글에 언급된 블로그 게시물은 다음과 같습니다.
답변자 : gnrfan
IANA 는 JSON에 대한 공식 MIME 유형을 application/json
으로 등록했습니다.
text/json
아닌 이유에 대해 물었을 때 Crockford는 JSON이 실제로 JavaScript나 텍스트가 아니며 IANA가 text/*
보다 application/*
을 전달할 가능성이 더 높다고 말한 것 같습니다.
추가 리소스:
답변자 : Alix Axel
JSON의 경우:
Content-Type: application/json
JSON-P의 경우 :
Content-Type: application/javascript
답변자 : Mikhail.Mamaev
물론 JSON에 대한 올바른 MIME 미디어 유형은 application/json
이지만 애플리케이션에서 예상되는 데이터 유형을 인식해야 합니다.
예를 들어 Ext GWT를 사용하고 서버 응답은 text/html 로 가야 하지만 JSON 데이터를 포함해야 합니다.
클라이언트 측, Ext GWT 폼 리스너
uploadForm.getForm().addListener(new FormListenerAdapter() { @Override public void onActionFailed(Form form, int httpStatus, String responseText) { MessageBox.alert("Error"); } @Override public void onActionComplete(Form form, int httpStatus, String responseText) { MessageBox.alert("Success"); } });
application/json 응답 유형을 사용하는 경우 브라우저에서 파일을 저장하도록 제안합니다.
Spring MVC를 사용한 서버측 소스 코드 스니펫
return new AbstractUrlBasedView() { @SuppressWarnings("unchecked") @Override protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/html"); response.getWriter().write(json); } };
답변자 : Bhavin
JSON:
응답은 URL에 전달된 쿼리 매개변수에 따라 동적으로 생성된 데이터입니다.
예시:
{ "Name": "Foo", "Id": 1234, "Rank": 7 }
콘텐츠 유형: application/json
JSON-P:
패딩이 있는 JSON. 응답은 함수 호출이 래핑된 JSON 데이터입니다.
예시:
functionCall({"Name": "Foo", "Id": 1234, "Rank": 7});
콘텐츠 유형: application/javascript
답변자 : Gourneau
Ubuntu 또는 Debian을 사용 중이고 Apache를 통해 .json 파일을 제공하는 경우 올바른 콘텐츠 유형으로 파일을 제공할 수 있습니다. Firefox 확장 JSONView 를 사용하고 싶기 때문에 주로 이 작업을 수행하고 있습니다.
Apache 모듈 mod_mime 은 이를 쉽게 수행하는 데 도움이 됩니다. 그러나 Ubuntu에서는 /etc/mime.types 파일을 편집하고 다음 행을 추가해야 합니다.
application/json json
그런 다음 Apache를 다시 시작합니다.
sudo service apache2 restart
답변자 : Mark Clancy
클라이언트 측에서 ASP.NET 웹 서비스를 호출하는 경우 작동 application/json
나는 이것이 jQuery 및 Ext 프레임워크에 대해 동일하다고 생각합니다.
답변자 : Resist Design
JSON에 대한 올바른 콘텐츠 유형은 JSONP를 사용하지 않는 한 application/json
이며 패딩이 있는 JSON이라고도 하며 실제로 JavaScript이므로 올바른 콘텐츠 유형은 application/javascript
입니다.
답변자 : shashwat
application/json
이 JSON 응답에 가장 적합한 MIME 유형이라는 데는 의심의 여지가 없습니다.
그러나 몇 가지 압축 문제로 인해 application/x-javascript
를 사용해야 했던 경험이 있습니다. 내 호스팅 환경은 GoDaddy 와 공유 호스팅입니다. 그들은 내가 서버 구성을 변경하는 것을 허용하지 않습니다. 응답을 압축하기 위해 web.config
파일에 다음 코드를 추가했습니다.
<httpCompression> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/> <dynamicTypes> <add mimeType="text/*" enabled="true"/> <add mimeType="message/*" enabled="true"/> <add mimeType="application/javascript" enabled="true"/> <add mimeType="*/*" enabled="false"/> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true"/> <add mimeType="message/*" enabled="true"/> <add mimeType="application/javascript" enabled="true"/> <add mimeType="*/*" enabled="false"/> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
이를 사용하여 .aspx 페이지는 g-zip으로 압축되었지만 JSON 응답은 압축되지 않았습니다. 나는 추가했다
<add mimeType="application/json" enabled="true"/>
정적 및 동적 유형 섹션에서. 그러나 이것은 JSON 응답을 전혀 압축하지 않습니다.
그 후 새로 추가된 이 유형을 제거하고 추가했습니다.
<add mimeType="application/x-javascript" enabled="true"/>
정적 및 동적 유형 섹션 모두에서 응답 유형을 변경했습니다.
.ashx(비동기 처리기)
application/x-javascript
그리고 이제 내 JSON 응답이 g-zip으로 압축되었음을 발견했습니다. 그래서 개인적으로 추천합니다
application/x-javascript
공유 호스팅 환경 에서 JSON 응답을 압축하려는 경우에만 가능합니다. 공유 호스팅에서는 IIS 구성을 변경할 수 없기 때문입니다.
답변자 : Ivo Limmen
application/json
을 MIME 유형으로 사용할 때만 다음이 있습니다(2011년 11월 Chrome 최신 버전, Firefox with Firebug 포함 ).
- JSON이 서버에서 로드될 때 Chrome에서 더 이상 경고가 표시되지 않습니다.
- Firebug는 형식이 지정된 JSON 데이터를 보여주는 응답에 탭을 추가합니다. MIME 유형이 다른 경우 '응답 내용'으로만 표시됩니다.
답변자 : Conan
모든 것이 콘텐츠 유형 application/json
작동하는 것은 아닙니다.
파일을 업로드하기 위해 Ext JS <iframe>
대한 문서를 생성하기 위해 브라우저에서 서버 응답을 구문 분석한다는 점에 유의하십시오.
서버가 JSON을 사용하여 반환 개체를 보내는 경우 브라우저에 변경되지 않은 텍스트를 문서 본문에 삽입하도록 지시 Content-Type
text/html
로 설정해야 합니다.
Ext JS 3.4.0 API 문서를 참조하십시오.
답변자 : VLostBoy
JSON은 DSL(도메인별 언어 )이며 JavaScript와 독립적인 데이터 형식이므로 자체 MIME 유형인 application/json
있습니다. MIME 유형에 대한 존중은 물론 클라이언트 중심이므로 text/plain
이 바이트 전송을 위해 수행할 수 있지만 그러면 불필요하게 벤더 애플리케이션 도메인인 application/json
해석을 푸시하게 될 것입니다. text/plain
통해 XML을 전송하시겠습니까?
그러나 솔직히 말해서, MIME 유형의 선택은 데이터를 해석하는 방법에 대한 클라이언트에 대한 조언입니다. text/plain
또는 text/HTML
(HTML이 아닌 경우)은 유형 삭제와 같습니다. 이는 모든 객체를 Object 유형으로 만드는 것만큼 정보가 없습니다. 입력된 언어로.
내가 아는 어떤 브라우저 런타임도 JSON 문서를 가져와서 개입 없이 JavaScript 액세스 가능한 객체로 런타임에서 자동으로 사용할 수 있도록 만들지 않습니다. 하지만 장애가 있는 클라이언트로 작업하는 경우 완전히 다른 문제입니다. 그러나 그것이 전부 는 아닙니다. RESTful JSON 서비스에는 JavaScript 런타임이 없는 경우가 많지만 JSON을 실행 가능한 데이터 교환 형식으로 사용하는 것을 막지는 않습니다. 클라이언트가 그렇게 장애가 있다면 ... 대신 Ajax 템플릿 서비스를 통한 HTML 삽입을 고려할 것입니다.
애플리케이션/JSON!
답변자 : yodabar
클라이언트 측 환경에 있는 경우 잘 지원되는 웹 응용 프로그램에 대해 브라우저 간 지원에 대한 조사가 필수입니다.
올바른 HTTP Content-Type 은 application/json
이며 다른 것들도 이미 강조 표시되어 있지만 일부 클라이언트는 이를 잘 처리하지 못합니다. 이것이 jQuery가 기본 text/html
권장하는 이유입니다.
답변자 : Irfan DANISH
정답은 다음과 같습니다.
Content-Type: application/json
답변자 : fcm
다른 많은 사람들이 언급했듯이 application/json
이 정답입니다.
그러나 아직 설명하지 않은 것은 귀하가 제안한 다른 옵션이 의미하는 바입니다.
application/x-javascript
application/javascript
가 표준화되기 전의 JavaScript에 대한 실험적 MIME 유형입니다.
text/javascript
: 이제 사용되지 않습니다. 자바스크립트를 사용할 때는 application/javascript
사용해야 합니다.
text/x-javascript
: 위 상황에 대한 실험적 MIME 유형입니다.
text/x-json
application/json
이 공식적으로 등록되기 전 JSON에 대한 실험적 MIME 유형입니다.
요컨대 콘텐츠 유형에 대해 의문이 있을 때마다 이 링크를 확인해야 합니다.
답변자 : raja
JSP 에서는 in page 지시문에서 이것을 사용할 수 있습니다.
<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%>
JSON에 대한 올바른 MIME application/json
입니다. JSP는 클라이언트에 응답을 보내는 데 사용합니다.
답변자 : Sukane
" application/json
"은 올바른 JSON 콘텐츠 유형입니다.
def ajaxFindSystems = { def result = Systems.list() render(contentType:'application/json') { results { result.each{sys-> system(id:sys.id, name:sys.name) } } resultset (rows:result.size()) } }
답변자 : user1596138
application/json
대한 IANA 등록은 다음과 같이 말합니다.
다음 미디어 유형을 사용하는 애플리케이션: JSON은 ActionScript, C, C#, Clojure, ColdFusion, Common Lisp, E, Erlang, Go, Java, JavaScript, Lua, Objective와 같은 모든 프로그래밍 언어로 작성된 애플리케이션 간에 데이터를 교환하는 데 사용되었습니다. CAML, Perl, PHP, Python, Rebol, Ruby, Scala 및 Scheme.
IANA.org 에는 이러한 다른 미디어 유형이 나열 되어 있지 않으며, 실제로는 application/javascript
도 이제 사용되지 않습니다. 그래서 application/json
정말 가능한 유일한 정답입니다.
브라우저 지원은 또 다른 문제입니다.
가장 널리 지원되는 비표준 미디어 유형은 text/json
또는 text/javascript
입니다. 그러나 일부 큰 이름은 text/plain
사용하기도 합니다.
text/xml
로 반환하는 Flickr가 보낸 Content-Type 헤더입니다. Google은 일부 ajax API에 text/javascript
예:
curl -I "https://ajax.googleapis.com/ajax/services/search/video?v=1.0&q=jsonexample"
출력: Content-Type: text/javascript
curl -I "https://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=f82254c1491d894f1204d8408f645a93"
출력: Content-Type: text/xml
답변자 : LombaX
올바른 MIME 유형은 application/json
하지만
브라우저 유형 또는 프레임워크 사용자가 필요로 하는 많은 상황을 경험했습니다.
text/html application/javascript
답변자 : Andro
나는 아래를 사용한다
contentType: 'application/json', data: JSON.stringify(SendData),
답변자 : Alexander Burakevych
게시할 때 Content-Type 헤더를 ' application/json '으로 설정해야 합니다. 요청을 수신하는 서버에는 " Accept=application/json "이 포함되어야 합니다. Spring MVC에서는 다음과 같이 할 수 있습니다.
@RequestMapping(value="location", method = RequestMethod.POST, headers = "Accept=application/json")
응답에 헤더를 추가합니다.
HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json");
답변자 : Chetabahana
application/json
은 PHP에서 훌륭하게 작동하여 배열 또는 객체 데이터를 저장합니다.
이 코드를 사용하여 공개적으로 볼 수 있도록 설정된 GCS(Google Cloud Storage)의 JSON에 데이터를 넣습니다.
$context = stream_context_create([ 'gs' => [ 'acl'=>'public-read', 'Content-Type' => 'application/json', ] ]); file_put_contents( "gs://BUCKETNAME/FILENAME.json", json_encode((object) $array), false, $context );
데이터를 다시 가져오는 방법은 간단합니다.
$data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json"));
답변자 : Chand Priyankara
Spring 에는 정의된 유형이 있습니다. MediaType.APPLICATION_JSON_VALUE
이는 application/json 에 해당합니다.
답변자 : Mehmet_
JSON의 경우 다음을 사용하고 있습니다.
Content-Type: application/json
이것은 IETF의 JSON 데이터 교환 형식 7158 제안 섹션 1.2: JSON 사양에 설명되어 있습니다.
답변자 : Ankit Zalani
JSON에 패딩이 있는 경우 application/jsonp
됩니다. JSON에 패딩이 없으면 application/json
입니다.
두 가지를 모두 처리하려면 패딩이 있든 없든 신경 쓰지 않고 'application/javascript'를 사용하는 것이 좋습니다.
답변자 : user3087089
PHP 개발자는 다음을 사용합니다.
<?php header("Content-type: application/json"); // Do something here... ?>
답변자 : Community Wiki
REST 컨텍스트에서 JSON을 사용할 때 허용된 응답 확장...
REST 리소스 및 컬렉션을 나타낼 때 application/x-resource+json
및 application/x-collection+json
사용에 대한 강력한 주장이 있습니다.
그리고 jsonapi 사양을 따르기로 결정했다면 문서화된 대로 application/vnd.api+json
을 사용해야 합니다.
보편적인 표준은 없지만, 전송되는 리소스에 추가된 의미는 application/json
보다 더 명확한 Content-Type을 정당화한다는 것이 분명합니다.
이 추론에 따라 다른 컨텍스트는 보다 구체적인 Content-Type 을 정당화할 수 있습니다.
답변자 : Krishna
JSON의 REST API에서 데이터를 가져오면 content-type을 사용해야 합니다.
For JSON data: Content-Type:application/json For HTML data: Content-Type:text/html, For XHTML data: Content-Type:application/xhtml+xml, For XML data: Content-Type:text/xml, application/xml
답변자 : Iresha Rubasinghe
JSON (JavaScript Object Notation) 및 JSONP ("JSON with padding") 형식은 매우 유사하므로 어떤 MIME 유형을 사용해야 하는지 매우 혼란스러울 수 있습니다. 형식은 비슷하지만 약간의 미묘한 차이가 있습니다.
그래서 의심스러운 점이 있을 때마다 저는 매우 간단한 접근 방식(대부분의 경우 완벽하게 작동함), 즉 해당 RFC 문서를 확인하는 방법을 사용합니다.
JSON RFC 4627 (JavaScript Object Notation(JSON)용 application/json 미디어 유형)은 JSON 형식의 사양입니다. 섹션 6에서 JSON 텍스트의 MIME 미디어 유형은
application/json.
JSONP JSONP("패딩이 있는 JSON")는 브라우저에서 JSON과 다른 방식으로 처리됩니다. JSONP는 일반 JavaScript 스크립트로 처리되므로 JavaScript용 현재 공식 MIME 유형인 application/javascript,
그러나 대부분의 경우 text/javascript
MIME 유형도 잘 작동합니다.
text/javascript
는 RFC 4329 (스크립팅 미디어 유형) 문서에 의해 더 이상 사용되지 않는 것으로 표시되었으며 대신 application/javascript
그러나 레거시 이유 때문에 text/javascript
가 여전히 널리 사용되며 브라우저 간 지원이 있습니다( application/javascript
MIME 유형, 특히 구형 브라우저의 경우 항상 그런 것은 아님).
답변자 : Kashif Solangi
Content-Type: application/json
- json
Content-Type: application/javascript
- json-P
Content-Type: application/x-javascript
- 자바스크립트
Content-Type: text/javascript
- javascript 그러나 더 이상 사용되지 않으며 html 속성으로 사용되는 이전 IE 버전입니다.
Content-Type: text/x-javascript
- JavaScript 미디어 유형이지만 더 이상 사용되지 않음
Content-Type: text/x-json
- application/json이 공식적으로 등록되기 전의 json.
출처 : Here
출처 : http:www.stackoverflow.com/questions/477816/what-is-the-correct-json-content-type">