Java バックエンドはクロスドメインの問題 (フィルターまたはアノテーション) を解決します。

1. プロジェクト全体へのクロスドメイン アクセスを許可し、フィルターでフィルター処理し、フォルダーの下に Web フィルターという名前の Java クラスを作成します。

ファイルの場所とファイル名: \src\main\java\pm.lms\WebConfig\SimpleCORSFilter.java これら 2 つのファイルは、src\main\java の下の任意のサブフォルダーに配置でき、注釈を使用して自分で定義できることに注意してください。こうすることで、システムは @Configuration を含むファイルを見つけて、構成ファイル web.xml に登録します。web.xml ファイルを手動で操作する必要はありませんが、プロジェクトが springBoot フレームワークではない場合は、本来の方法で web.xml に手動で登録する必要があります。

public class SimpleCORSFilter implements Filter{
    
      
  
    @Override  
    public void destroy() {
    
      
          
    }  
  
    @Override  
    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.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
            chain.doFilter(req, res);  
          
    }  
  
    @Override  
    public void init(FilterConfig arg0) throws ServletException {
    
      
          
    }  
  
}

次の構成を web.xml に追加する必要があります

1) 最初の方法: web.xml を手動で設定します

<filter>  
      <filter-name>cors</filter-name>  
      <filter-class>com.ssm.web.filter.SimpleCORSFilter</filter-class>  
    </filter>  
    <filter-mapping>  
      <filter-name>cors</filter-name>  
      <url-pattern>/*</url-pattern>  
    </filter-mapping>
</filter>

2) 2 番目の方法: springBoot アノテーションの方法。Java クラスを使用して web.xml ファイルを直接操作します。注意: springBoot は web.xml の手動構成を使用しません。

ファイルの場所とファイル名: \src\main\java\pm.lms\WebConfig\WebConfig.java

package pm.lms.WebConfig;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class WebConfig {
    
    
    @Bean
    public FilterRegistrationBean<SimpleCORSFilter> filterRegistrationBean() {
    
    
        FilterRegistrationBean<SimpleCORSFilter> filterRegistrationBean = new FilterRegistrationBean<>();
        filterRegistrationBean.setFilter(new SimpleCORSFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        return filterRegistrationBean;
    }
}

2. 単一メソッドにクロスドメイン アクセスを提供するには、リクエスト ヘッダーを直接追加します。

response.setHeader("アクセス制御の許可オリジン", "*");
response.setHeader("アクセス制御の許可メソッド", "POST、GET、OPTIONS、DELETE");
response.setHeader("アクセス-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
クロスドメインの問題を解決するためのバックエンド (springboot)
まず、次のことを行う必要があります。クロスドメインとは何か:
クロスドメインとは、異なるドメイン名間の相互アクセスを指します。クロスドメインとは、ブラウザーが他の Web サイトからのスクリプトを実行できないことを意味します。これは、ブラウザの同一生成元ポリシー、つまりブラウザによって JavaScript に課されるセキュリティ制限によって発生します。

つまり、Web サイト A で Ajax を使用して Web サイト B の特定のコンテンツを取得したい場合、
Web サイト A と Web サイト B が同じドメインにない場合、クロスドメイン アクセスの問題が発生します。

同一ドメインとは何ですか?
同じプロトコル、同じ IP、同じポート、および 3 つのうちの 1 つの違いにより、クロスドメインが発生します。

クロスドメインに対するフロントエンド ソリューション:
前述したように、クロスドメインとは、ブラウザーが他の Web サイトからスクリプトを実行できないことを意味します。これは、ブラウザの同一生成元ポリシー、つまりブラウザによって JavaScript に課されるセキュリティ制限によって発生します。
解決策:
そこで、ノード サーバーをプロキシとして設定し、リクエストをノード サーバーに送信すると、ノード サーバーはそれをバックエンドに転送して、クロスドメインの問題を回避します。

バックエンドはクロスドメインの問題を解決します。
バックエンドの解決策は比較的シンプルです。たとえば、私が使用する Springboot では、現在のコントローラーへのクロスドメイン アクセスを実現するために、Controller クラスに「@CrossOrigin」アノテーションを追加するだけで済みます。もちろん、このラベルをメソッドに追加することもできます。

@RequestMapping(value = "/users")
@RestController
@CrossOrigin
public class UserController {
    
    
 
    @Autowired
    private UserService userService;
 
    @RequestMapping(method = RequestMethod.POST)
    @CrossOrigin
    public User create(@RequestBody @Validated User user) {
    
    
        return userService.create(user);
    }
}

学習コレクション
を転載: https://blog.csdn.net/weixin_41796956/article/details/84133901?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu% 7ERate-1 -84133901-blog-128429843.235%5Ev38%5Epc_relevant_sort& Depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommmendFromBaidu%7ERate-1-84133901-blog-128429 843.235%5E v38%5Epc_relevant_sort&utm_relevant_index=2

おすすめ

転載: blog.csdn.net/hmwz0001/article/details/131734831