Spring MVCドメイン間問題の解決&@RequestBodyの理解

3373 ワード

CORS
まず、最近、前後の分離プロジェクトをしているので、分離は1つのドメインにいない可能性があることを意味しているので、CORSの問題に遭遇することは避けられません.いくつかの方法を試したことがあります.
1、Spring MVC 4.2.5以降に追加されたドメイン間注釈@CrossOriginをサポートし、古いプロジェクトであればspringライブラリをアップグレードすると互換性のある問題があるかもしれないが、なぜこの注釈は効果が上がらないのか分からない.2、逆エージェントを使うと、これはきっと使いやすいです.3、そして私が今使っているのは、手動でFilterを追加し、Responseでドメイン間のサポートを追加することです.この方法は古いブラウザに問題があるかもしれません.
CORSFilter.java
public class CORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) res;
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}

web.xml
<filter>
    <filter-name>corsfilter-name>
    <filter-class>xxxx.CORSFilterfilter-class>
filter>
<filter-mapping>
    <filter-name>corsfilter-name>
    <url-pattern>/*url-pattern>
filter-mapping>

@RequestBody
@RequestBodyという注釈についてお話しします.単純なオブジェクトを直接注釈なしで自動的に組み立てることができると思っていたので、springは私たちのためにすべてのタイプのオブジェクトを組み立てることができると思っていました.しかし、今日テストしたように、Map、List、または複合オブジェクトは、この注釈を使用して正しく組み立てる必要があります.
@RequestBodyという注釈が見つかりました.ajaxにはいくつかの要求があります.
データはJSONが必要です.stringify(data)処理;contentTypeタイプはアプリケーション/jsonである必要があります.この注記を付けずに単純なオブジェクトを組み立てる場合:1.データは直接jsonで処理する必要はありません.2.contentTypeタイプのデフォルトはアプリケーション/x-www-form-urlencodedです.