Spring開発のスクリーンセーバーは国境を越えた問題を解決します。


クロスドメインとは何ですか
ドメインをまたぐ訪問はAウェブサイトのjavascriptコードがBウェブサイトにアクセスするので、ブラウザは自動的にドメインを跨ぐアクセスを阻止します。バックエンドデータの添削を含めて、ブラウザのソースポリシーに従います。
国境を越える状況が発生しましたか?
プロトコル名、ドメイン名、ポート間のいずれかが現在のページと異なるとドメイン間の問題が発生します。例えば、フロントエンドはバックエンドインターフェースサービスを呼び出すために(http:/local host)を使用する(http://debo.com)
解決方法
実際の開発では、CORSの方式を使って、自分でブロックを定義してテスト環境を開発することでクロスドメイン問題を解決することができます。
  • CORS方式:私たち自身が定義したブロックを使って統一的に設定し、クロスドメイン問題を解決することができます。
  • ブロッキングコード:
    package com.doubleme.core.filter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.http.HttpHeaders;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    /**
     * 
     * @ClassName CorsInterceptor
     * @Description      
     * @Author DoubleME
     * @CreateTime 2017 9 21    12:43:26
     *
     */
    public class CorsInterceptor implements HandlerInterceptor {
    
        @Override
        public boolean preHandle(HttpServletRequest request, 
                HttpServletResponse response, Object handler) throws Exception {
            if (request.getHeader(HttpHeaders.ORIGIN) != null)
            {
                response.addHeader("Access-Control-Allow-Origin", "*");
                response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
                response.addHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
                response.addHeader("Access-Control-Max-Age", "3600");
            }
           return true;
        }
    
        /**
         *                ,           
         *   modelAndView     ,      
         */
        @Override
        public void postHandle(HttpServletRequest request, 
                HttpServletResponse response, Object handler, 
                ModelAndView modelAndView) throws Exception {
        }
    
        /**
         *  DispatcherServlet           ,        
         *           ,                  afterCompletion()
         */
        @Override
        public void afterCompletion(HttpServletRequest request, 
                HttpServletResponse response, Object handler, Exception ex) 
                throws Exception {
        }
    
    }
    
    springmvc.xmlプロファイル
        <mvc:interceptor>
                
                
                <mvc:mapping path="/**" />
                
                <bean class="com.doubleme.core.filter.CorsInterceptor">bean>  
            mvc:interceptor>