[json] 올바른 JSON 컨텐츠 유형은 무엇입니까?

나는 JSON 으로 오랫동안 엉망이되어 텍스트로 밀어 내고 아무도 아는 적이 없지만 (내가 아는) 아무도 해치지 않지만 제대로 일을 시작하고 싶습니다.

나는 보았다 그래서 json으로 콘텐츠 형식에 대한 많은 사칭 “표준”

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

그러나 어느 것이 맞습니까? 보안 및 브라우저 지원 문제가 서로 다릅니다.

비슷한 질문이 있다는 것을 알고 있습니다 .JSON이 REST API에서 반환되면 어떤 MIME 형식입니까? 하지만 좀 더 구체적인 답변을 원합니다.



답변

JSON 텍스트의 경우 :

application/json

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

들어 JSONP 콜백 (실행 가능한 자바 스크립트) :

application/javascript

다음은 댓글에 언급 된 관련 블로그 게시물입니다.


답변

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

없는 이유에 대해 물었을 때 text/json, 크록 포드는 JSON 말했다 것으로 보인다 정말 자바 스크립트도 텍스트하지 않고 또한 IANA는 가능성이 배부했다 application/*보다 text/*.

추가 자료 :


답변

JSON의 경우 :

Content-Type: application/json

대한 JSON-P :

Content-Type: application/javascript


답변

물론 JSON에 대한 올바른 MIME 미디어 유형은입니다 application/json. 그러나 애플리케이션에서 어떤 유형의 데이터가 예상되는지 알아야합니다.

예를 들어 Ext GWT를 사용 하고 서버 응답은 텍스트 / 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);
    }
};


답변

JSON :

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

예:

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

컨텐츠 타입: application/json


JSON-P :

패딩이있는 JSON. 응답은 함수 호출이 감싸 진 JSON 데이터입니다.

예:

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

컨텐츠 타입: application/javascript


답변

Ubuntu 또는 Debian을 사용하고 Apache를 통해 .json 파일을 제공하는 경우 올바른 컨텐츠 유형으로 파일을 제공 할 수 있습니다. Firefox 확장 JSONView 를 사용하고 싶기 때문에 주로 이것을하고 있습니다.

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

application/json json

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

sudo service apache2 restart


답변

클라이언트 측에서 ASP.NET 웹 서비스를 호출하는 경우 ASP.NET 웹 서비스 application/json가 작동해야합니다. 나는 이것이 jQueryExt 프레임 워크 에서 동일하다고 생각합니다 .