it-swarm-ko.com

올바른 JSON 콘텐츠 유형은 무엇입니까?

나는 얼마 동안 JSON 을 어지럽 혔고, 그냥 텍스트로 푸시하고 누구에게도 해를 끼치 지 않았지만 제대로 작업하기를 원합니다. .

나는so많은 사람들이 JSON 컨텐츠 유형에 대해 "표준"이라고 주장한 것을 보았다.

application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json

그러나 어느 것이 정확하거나 가장 좋습니까? 나는 그들 사이에 다양한 보안 및 브라우저 지원 문제가 있다는 것을 모았습니다.

유사한 질문이 있다는 것을 알고 있습니다.JSON이 REST API에 의해 반환되는 경우 어떤 MIME 유형이 필요합니까?대답.

9725
Oli

JSON 텍스트의 경우 :

application/json

JSON 텍스트의 MIME 미디어 유형은application/json입니다. 기본 인코딩은 UTF-8입니다. (출처 : RFC 4627 ).

JSONP (runnable javascript) 콜백 포함 :

application/javascript

관련성있는 의견에 언급 된 블로그 게시물이 있습니다.

9674
Gumbo

IANAIANA 는 JSON의 공식 MIME 유형을application/json로 등록했습니다.

text/json가 아닌지에 대한 질문에 Crockford는 JSON이 실제로 JavaScript도 텍스트도 아니며 IANA가 application/*보다 text/*를 전달할 가능성이 더 많다고 말한 것 같습니다.

기타 리소스 :

1557
gnrfan

JSON의 경우 :

Content-Type: application/json

JSON-P :

Content-Type: application/javascript
833
Alix Axel

물론 JSON의 올바른 MIME 미디어 유형은 application/json이지만 응용 프로그램에서 예상되는 데이터 유형을 알아야합니다.

예를 들어, Ext GWT 를 사용하고 서버 응답은 text/html 로 이동해야하지만 JSON 데이터를 포함해야합니다.

클라이언트 쪽, 외부 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);
    }
};
610
Mikhail.Mamaev

JSON :

응답은 URL에서 전달 된 쿼리 매개 변수에 따라 동적으로 생성 된 데이터입니다.

예:

{ "Name": "Foo", "Id": 1234, "Rank": 7 }

Content-Type : application/json


JSON-P :

패딩이있는 JSON 응답은 JSON 데이터이며, 함수 호출은이를 둘러 쌉니다.

예:

functionCall({"Name": "Foo", "Id": 1234, "Rank": 7});

Content-Type : application/javascript

452
Bhavin

Ubuntu 또는 Debian을 사용하고 있고 Apache를 통해 .json 파일을 제공하는 경우 파일을 올바른 내용 유형으로 제공 할 수 있습니다. 내가 주로 파이어 폭스 확장 기능을 사용하기 때문에이 일을하고있다 JSONView

아파치 모듈 mod_mime 은 쉽게 이것을 도와줍니다. 그러나 우분투에서는 /etc/mime.types 파일을 편집하고 줄을 추가해야합니다.

application/json json

그런 다음 Apache를 다시 시작하십시오.

Sudo service Apache2 restart
387
Gourneau

클라이언트 쪽에서 ASP.NET 웹 서비스를 호출하려면 application/json를 사용하여 작동해야합니다. 나는 이것이 jQueryExt frameworks와 동일하다고 생각한다.

372
markvpc

JSON에 적합한 콘텐츠 유형은 application/json Padding과 관련된 JSON이라고도하는 JSONP 를 사용하는 경우가 아니라면 실제로 JavaScript이며 올바른 콘텐츠 유형은 application/javascript입니다.

296
Resist Design

application/json가 JSON 응답을위한 가장 좋은 MIME type이라는 것은 의심의 여지가 없습니다.

하지만 압축 문제로 인해 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 configurations를 변경할 수 없기 때문입니다.

285
shashwat

MIME 유형으로 application/json을 (를) 사용하는 경우에만 2011 년 11 월에 최신 버전의 Chrome, 방화 광 이있는 Firefox가 있습니다.

  • JSON이 서버에서로드 될 때 Chrome에서 더 이상 경고하지 않습니다.
  • Firebug는 응답에 JSON 형식의 데이터를 보여주는 탭을 추가합니다. MIME 형식이 다른 경우 '응답 내용'으로 표시됩니다.
259
Ivo Limmen

콘텐츠 유형 application/json에 대해 모든 것이 작동하지 않습니다.

Ext JS form을 사용하여 업로드 파일을 제출하는 경우 서버 응답이 브라우저에 의해 구문 분석되어 <iframe>에 대한 문서를 작성한다는 점에 유의하십시오.

서버가 JSON을 사용하여 반환 객체를 보내는 경우 Content-Type 헤더를 text/html로 설정하여 문서 본문에 텍스트를 변경하지 않고 삽입하도록 브라우저에 지시해야합니다.

Ext JS 3.4.0 API 문서 를 참조하십시오.

234
Conan

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 삽입을 고려할 것입니다.

신청/제이슨!

223
VLostBoy

클라이언트 측 환경에있는 경우 잘 지원되는 웹 응용 프로그램의 경우 브라우저 간 지원에 대한 조사가 필수적입니다.

다른 HTTP Content-Type은 application/json가 될 것입니다. 다른 클라이언트는 이미 강조 표시되어 있지만 일부 클라이언트는이를 제대로 처리하지 못하기 때문에 jQuery가 기본 text/html을 권장합니다.

203

정답은 다음과 같습니다.

Content-Type: application/json
161
Irfan DANISH

다른 많은 사람들이 언급했듯이 application/json는 정답입니다.

그러나 아직 설명되지 않은 것은 당신이 제안한 다른 옵션들이 의미하는 바입니다.

  • application/x-javascript : application/javascript가 표준화되기 전에 실험용 MIME 형식의 JavaScript 용입니다.

  • text/javascript : 이제 폐기되었습니다. 자바 스크립트를 사용할 때는 application/javascript를 사용해야합니다.

  • text/x-javascript : 위의 상황에 대한 실험적인 MIME 형식입니다.

  • text/x-json : application/json가 공식적으로 등록되기 전에 JSON에 대한 실험용 MIME 유형입니다.

대체로 콘텐츠 유형에 대해 의문이 생길 때마다 이 링크 를 확인해야합니다.

158
fcm

JSP 에서 page 지시어에 사용할 수 있습니다 :

<%@ page language="Java" contentType="application/json; charset=UTF-8"
    pageEncoding="UTF-8"%>

JSON의 올바른 MIME media 유형은 application/json입니다. JSP는이를 사용하여 클라이언트에 응답을 보냅니다.

141
raja

"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())
  }
}
109
Sukane

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는 실제로 correct 가능한 유일한 답입니다.

브라우저 지원은 또 다른 문제입니다.

가장 널리 지원되는 비표준 미디어 유형은 text/json 또는 text/javascript입니다. 그러나 일부 큰 이름은 text/plain를 사용합니다.

JSON을 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

101
Jhawins

올바른 MIME 유형은application/json

BUT

브라우저 유형이나 프레임 워크 사용자가 필요한 많은 상황을 경험했습니다.

text/html

application/javascript
84
LombaX

나는 아래를 사용한다.

contentType: 'application/json',
data: JSON.stringify(SendData),
71
Andro

게시 할 때 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");
63

Spring 에는 정의 된 유형이 있습니다. MediaType.APPLICATION_JSON_VALUE application/json 과 같습니다.

56
Chand Priyankara

application/json는 배열 또는 객체 데이터를 저장하기 위해 PHP에서 (잘) 작동합니다.

이 코드를 사용하여 Google Cloud Storage (GCS) 에 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"));
56
Chetabahana

JSON의 경우 다음을 사용하고 있습니다.

 Content-Type: application/json

이것은 IETF의 JSON 데이터 교환 형식 7158 제안, 섹션 1.2 : JSON 사양 에서 설명합니다.

48
Mehmet_

JSON에 패딩이 있으면 application/jsonp가됩니다. JSON에 패딩이 없으면 application/json가됩니다.

두 가지 모두를 다루기 위해서는 'application/javascript'를 패딩과 함께 사용하든 패딩없이 사용하든 관계없이 사용하는 것이 좋습니다.

48
Ankit Zalani

REST 컨텍스트에서 JSON을 사용할 때 허용되는 응답 확장 ...

REST 리소스 및 모음을 나타낼 때 application/x-resource+jsonapplication/x-collection+json 사용에 관한 strong argument 가 있습니다.

그리고 만약 당신이 jsonapi 스펙을 따르기로 결정했다면, 당신은application/vnd.api+json의 사용법이 문서화되어 있습니다.

보편적 인 표준은 없지만, 전송되는 자원에 추가 된 의미가 application/json보다 더 명백한 Content-Type 을 정당화한다는 것이 분명합니다.

이러한 추론에 따라 다른 컨텍스트는보다 구체적인 Content-Type 을 정당화 할 수 있습니다.

42
jgomo3

PHP 개발자는 다음을 사용합니다.

<?php
    header("Content-type: application/json");

    // Do something here...
?>
40
user3087089

JSON에서 REST API의 데이터를 가져와 콘텐츠 유형을 사용해야하는 경우

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
38
Krishna

JSON (JavaScript Object Notation) 및 JSONP ( "JSON with padding") 형식은 매우 유사하므로 어떤 MIME 유형을 사용해야하는지 매우 혼란 스러울 수 있습니다 사용. 형식이 비슷하지만 두 형식 간에는 약간의 차이가 있습니다.

그래서 언제든지 의문의 여지가, 나는 아주 간단한 접근 방식 (대부분의 경우 완벽하게 작동), 즉 해당 RFC 문서를 확인하십시오.

JSON _ ​​ RFC 4627 (JavaScript Object Notation (JSON) 용 application/json Media Type)은 JSON 형식 사양입니다. 6 절에서 JSON 텍스트의 MIME 미디어 유형이

application/json.

JSONP JSONP ( "패딩이있는 JSON")은 브라우저에서 JSON과 다른 방식으로 처리됩니다. JSONP는 일반 JavaScript 스크립트로 취급되므로 JavaScript의 현재 공식 MIME 유형을 application/javascript, 사용해야합니다. 그러나 대부분의 경우 text/javascript MIME 형식도 제대로 작동합니다.

text/javascriptRFC 4329 (스크립팅 미디어 유형) 문서에 의해 폐기 된 것으로 표시되었으므로 application/javascript 유형을 대신 사용하는 것이 좋습니다. 그러나 기존의 이유로 인해 text/javascript는 여전히 널리 사용되고 있으며 크로스 브라우저를 지원합니다 (예 : application/javascript MIME 유형, 특히 구형 브라우저의 경우는 그렇지 않습니다).

24
Iresha Rubasinghe

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 - json 전에 application/json이 공식적으로 등록되었습니다.

23
Kashif Solangi

흥미로운 JSON 결과를 지정하려면 아래와 같이 요청 헤더에 "application/json"을 추가하십시오.

"Accept : application/json"은 원하는 응답 형식입니다.

"Content-Type : application/json"은 요청의 콘텐츠 형식을 지정하지만 application/jsonapplication/xml를 모두 지정하는 경우도 있지만 품질이 다를 수 있습니다. 어떤 서버가 다른 응답 형식을 다시 보내겠습니까? 예제를보십시오.

Accept:application/json;q=0.4,application/xml;q=8

XML은 더 높은 품질을 가지므로 XML을 반환합니다.

6
behzad babaei

적절한 현재 표준은 application/json입니다. 기본 인코딩은 UTF-8이지만 UTF-16 또는 UTF-32가 될 수도 있습니다. JSON이 UTF-16 또는 UTF-32로 작성되면 이진 content-transfer-encoding을 사용해야합니다.

Json에 대한 자세한 정보는 여기에 있습니다 : https://tools.ietf.org/html/rfc4627

이진 전송 인코딩에 대한 자세한 내용은 다음을 참조하십시오. https://www.w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html

5
sammyb123

나머지 답변을 보완하기 위해 JSON 링크 된 데이터 (JSON-LD) W3C에 따라 의 MIME 유형은 다음과 같습니다.

application/ld+json

유형 이름 : application

하위 유형 이름 : ld + json

또한 동일한 출처에서 :

파일 확장자 :

.jsonld

5
alejnavab

많은 콘텐츠 유형 가 있더라도 항상이 세 가지 콘텐츠 형식을 기억해보십시오. 더 자주 사용해야 할 수도 있습니다.

  • 콘텐츠 유형 : application/json
  • 콘텐츠 유형 : application/xml
  • Content-Type : text/html
1
cherankrish