Maison > Java > javaDidacticiel > le corps du texte

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

王林
Libérer: 2023-10-11 08:01:51
original
1750 Les gens l'ont consulté

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);
}
Copier après la connexion

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>
Copier après la connexion

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() {
    // 控制器方法的逻辑
}
Copier après la connexion

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>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal