content-type 설정 - 올바른 JSON 콘텐츠 유형은 무엇입니까?




종류 get (25)

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

REST 리소스 및 컬렉션을 나타낼 때 application/x-resource+jsonapplication/x-collection+json 사용하는 것에 대한 강력한 논쟁 이 있습니다.

그리고 jsonapi 스펙을 따르기로 결정 했다면 , 문서화 된대로 application/vnd.api+json 을 사용해야 합니다.

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

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

나는 JSON 을 오랫동안 사용하지 않고 그냥 텍스트로 푸시하고 다른 사람에게 해를 끼치 지 않았지만 (제대로 알고있는), 제대로 작업하기를 원합니다.

필자는 JSON 콘텐츠 유형에 대해 "표준"이라고 생각하는 것을 많이 보았습니다.

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

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

비슷한 질문이 있는데, JSON이 REST API에 의해 반환되는 경우 MIME 유형은 무엇입니까? , 좀 더 타겟 된 답변을 원합니다.


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/plain .

더 이상한 것은 JSON을 text/xml 로 반환하는 Flickr에 의해 보내진 Content-Type 헤더입니다. Google은 text/javascript 중 일부는 ajax apis를 사용합니다.

예 :

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


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

Apache 모듈 mod_mime 을 사용하면 쉽게이 작업을 수행 할 수 있습니다. 그러나 Ubuntu에서는 /etc/mime.types 파일을 편집하고 줄을 추가해야합니다.

application/json json

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

sudo service apache2 restart

클라이언트 측에서 ASP.NET 웹 서비스를 호출하려면 application/json 을 사용해야 application/json . 나는 이것이 jQueryExt 프레임 워크에서 동일하다고 생각한다.


JSON은 도메인 별 언어 (DSL) 및 JavaScript와 독립적 인 데이터 형식이며 자체 MIME 유형 인 application/json 있습니다. MIME 유형에 대한 존중은 물론 클라이언트 기반이므로 text/plain 이 바이트 전송을 위해 할 수 있지만 불필요하게 공급 업체 응용 프로그램 도메인 인 application/json 해석을 푸시 할 수 있습니다. text/plain 통해 XML을 전송하겠습니까?

하지만 정직하게 말하면, MIME 형식을 선택하는 것은 데이터 text/plain 또는 text/HTML ( text/HTML 이 아닌 경우)을 유형 삭제와 같은 방식으로 해석하는 방법에 대한 클라이언트의 조언입니다. Object 유형의 모든 객체를 만드는 것만 큼 유익하지 않습니다. 입력 된 언어로.

내가 아는 브라우저 런타임은 JSON 문서를 가져와 개입하지 않고 자바 스크립트 액세스 가능한 객체로 런타임에서 자동으로 사용할 수있게 만들지 만 장애인 클라이언트와 작업하는 경우에는 완전히 다른 문제입니다. 그러나 이것이 전부는 아닙니다. RESTful JSON 서비스는 종종 JavaScript 런타임이 없지만 JSON을 실행 가능한 데이터 교환 형식으로 사용하는 것을 중단하지는 않습니다. 클라이언트가 절름발이 인 경우 ... 대신 Ajax 템플릿 서비스를 통해 HTML 삽입을 고려할 것입니다.

응용 프로그램 / JSON!


정답은 다음과 같습니다.

Content-Type: application/json

JSP 에서는 페이지 지시어에 다음을 사용할 수 있습니다.

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

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


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

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

  • application/x-javascript : application/javascript 가 표준화되기 전에 JavaScript에 대한 실험용 MIME 유형.

  • text/javascript : 이제 폐기되었습니다. application/javascript 사용할 때는 application/javascript 사용해야 application/javascript .

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

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

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


JSON :

Content-Type: application/json

JSONP :

Content-Type: application/javascript

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

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

    // Do something here...
?>

Spring 에서는 application / json 과 동일한 MediaType.APPLICATION_JSON_VALUE 형식을 정의합니다.


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

그래서 의심의 여지가있을 때마다, 나는 아주 간단한 접근법 (대부분의 경우에 완벽하게 발견된다) 즉 대응하는 RFC 문서를 확인한다.

JSON RFC 4627 ( JSON 용 JavaScript / JSON 미디어 유형)은 JSON 형식의 사양입니다. 6 절에서 JSON 텍스트의 MIME 미디어 유형이

application/json.

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

text/javascriptrfc-editor.org/rfc/rfc4329.txt (Scripting Media Types) 문서에 의해 더 이상 사용되지 않는 것으로 표시되었으므로 대신 application/javascript 유형을 사용하는 것이 좋습니다. 그러나 기존의 이유로 인해 text/javascript 는 여전히 널리 사용되고 있으며 크로스 브라우저 지원 (특히 이전 브라우저의 경우 application/javascript MIME 유형의 경우는 아님)이 지원됩니다.


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

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

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

기타 리소스 :


모든 콘텐츠 유형 application/json 작동하지는 않습니다.

Ext JS 양식을 사용하여 파일을 업로드하는 경우 브라우저가 서버 응답을 구문 분석하여 <iframe> 대한 문서를 만들 수 있습니다.

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

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


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"));

나는 아래를 사용한다.

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

JSONP 사용하는 경우가 JSONP JSON에 적합한 콘텐츠 유형은 application/json 입니다. 실제로 JSON은 Padding과 함께 사용됩니다. 실제로는 JavaScript이며 올바른 콘텐츠 유형은 application/javascript 입니다.


JSON :

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

예:

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

콘텐츠 형식 : application/json

JSON-P :

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

예:

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

콘텐츠 유형 : application/javascript


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

JSON 텍스트의 경우 :

application/json

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

JSONP (runnable javascript) 콜백 포함 :

application/javascript

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


올바른 MIME 유형은 application/json

그러나

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

text/html

application/javascript

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

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



JSON.stringify (your object, null, 2)를 사용할 수 있습니다. 두 번째 매개 변수는 key와 Val을 매개 변수로 사용하는 replacer 함수로 사용할 수 있습니다. JSON 객체 내에서 무언가를 수정하려는 경우에 사용할 수 있습니다.





json content-type