Maison  >  Article  >  Java  >  Comment résoudre les problèmes d'accès inter-domaines en Java

Comment résoudre les problèmes d'accès inter-domaines en Java

王林
王林original
2023-10-11 08:01:511670parcourir

Comment résoudre les problèmes daccès inter-domaines en Java

Comment résoudre les problèmes d'accès entre domaines en Java

Lors du développement d'applications Web utilisant Java, nous rencontrons souvent des problèmes d'accès entre domaines. L'accès inter-domaines signifie que les ressources demandées par le client proviennent de différents domaines, par exemple, les ressources de domain2.com sont demandées à partir de la page Web de www.domain1.com. En raison des restrictions de la politique de même origine, de telles requêtes inter-domaines ne sont pas autorisées. Cet article présentera plusieurs méthodes pour résoudre les problèmes d'accès entre domaines en Java et fournira des exemples de code spécifiques.

Méthode 1 : Utiliser le filtre

En Java, l'utilisation du filtre est une méthode courante pour résoudre les problèmes d'accès entre domaines. Nous pouvons modifier l'en-tête de réponse en écrivant un filtre pour autoriser des requêtes inter-domaines spécifiques.

Tout d'abord, créez une classe qui implémente l'interface javax.servlet.Filter, telle que CorsFilter. Dans la méthode doFilter, ajoutez le code suivant :

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse httpServletResponse = (HttpServletResponse) response;
    httpServletResponse.setHeader("Access-Control-Allow-Origin", "http://www.domain1.com"); // 允许跨域访问的域名
    httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); // 允许的请求方法
    httpServletResponse.setHeader("Access-Control-Max-Age", "3600"); // 预检请求的有效期
    httpServletResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with,Content-Type"); // 允许携带的请求头
    chain.doFilter(request, response);
}

Ensuite, ajoutez CorsFilter à la configuration du filtre dans le fichier web.xml :

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>com.example.CorsFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

De cette façon, le filtre interceptera toutes les requêtes et ajoutera un accès inter-domaines dans la réponse champs obligatoires de l’en-tête.

Méthode 2 : utiliser le framework Spring

Si vous utilisez le framework Spring, vous pouvez utiliser les annotations fournies par le framework pour résoudre les problèmes d'accès entre domaines. Ajoutez l'annotation @CrossOrigin à la méthode du contrôleur SpringMVC pour spécifier que l'accès entre domaines est autorisé.

@CrossOrigin(origins = "http://www.domain1.com", maxAge = 3600)
@RequestMapping("/example")
public String example() {
    // 控制器方法的逻辑
}

De cette façon, le nom de domaine spécifié peut accéder à la méthode du contrôleur et ajouter les champs requis pour l'accès inter-domaines dans l'en-tête de réponse.

Il convient de noter que l'annotation @CrossOrigin ne peut être utilisée que sur les méthodes du contrôleur. Si vous souhaitez que l'ensemble de l'application prenne en charge l'accès inter-domaines, vous pouvez ajouter la configuration suivante dans le fichier de configuration Spring :

<mvc:cors>
    <mvc:mapping path="/**" />
    <mvc:allowed-origins>
        <mvc:origin>http://www.domain1.com</mvc:origin>
    </mvc:allowed-origins>
    <mvc:allowed-methods>
        <mvc:method>GET</mvc:method>
        <mvc:method>POST</mvc:method>
        <mvc:method>OPTIONS</mvc:method>
        <mvc:method>DELETE</mvc:method>
    </mvc:allowed-methods>
    <mvc:allowed-headers>
        <mvc:header>x-requested-with</mvc:header>
        <mvc:header>Content-Type</mvc:header>
    </mvc:allowed-headers>
</mvc:cors>

De cette façon. , l'ensemble de l'application prendra en charge l'accès inter-domaines et ajoutera les champs requis pour l'accès inter-domaines dans l'en-tête de réponse.

Résumé

Pour résoudre les problèmes d'accès inter-domaines en Java, vous pouvez utiliser les filtres Filter et les annotations fournis par le framework Spring. Autorisez les requêtes spécifiques d’origine croisée en ajoutant des champs d’en-tête de réponse. Grâce à ces méthodes, nous pouvons facilement résoudre les problèmes d'accès entre domaines en Java et garantir la sécurité et la stabilité de nos applications.

Ce qui précède présente des méthodes spécifiques et des exemples de code sur la façon de résoudre les problèmes d'accès inter-domaines en Java. J'espère que cet article vous aidera !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn