Springboot résout Ajax Cross-Domain pour votre référence. Le contenu spécifique est le suivant
1. La première méthode
1. Écrivez une configuration qui prend en charge les demandes de domaine croisé
import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.corsregistry; import org.springframework.web.servlet.config.annotation.webmvcconfigurera @time 2017-07-13 * / @ ConfigurationPublic classe CorsConfig étend webmvcconfigurerAdapter {static final String origines [] = new String [] {"get", "post", "put", "delete"}; @Override public void AddCorsMappings (Corsegistry Registry) {registry.addmapping ("/ **"). ALLERDORIGINS ("*"). AllowCredentials (true) .AllowedMethods (Origins) .maxage (3600); }}2. Interface de demande HTTP
@RestControllerPublic classe HelloController {@Autowired Helloservice Helloservice; @GetMapping (value = "/ test", produit = mediaType.Application_JSON_UTF8_VALUE) Public String Query () {return "Hello"; }}2. La deuxième méthode (recommandée)
PS: le premier type a un problème. Lorsque le serveur lance 500, il y a toujours un problème de domaine croisé.
@ SpringbootApplication @ ComponentsCan @ AliablediscoveryClientPublic Class ManagementApplication {public static void main (String [] args) {SpringApplication.Run (ManagementApplication.Class, args); } private corsconfiguration buildConfig () {CorsConfiguration CorsConfiguration = new CorsConfiguration (); CorsConfiguration.AddallowEdorigin ("*"); CorsConfiguration.AddallowedHeader ("*"); CorsConfiguration.AddallowedMethod ("*"); CorsConfiguration.addexposedHeader (httpheaderConstant.x_total_count); retour corsconfiguration; } / ** * Filtre de domaine croisé * * @return * / @bean public corsFilter corsFilter () {urlbasedCorsConfigurationsource Source = new UrlBasedCorsConfigurationsource (); source.RegisterCorsConfiguration ("/ **", buildConfig ()); // 4 retourne nouveau corsfilter (source); }}2. index.html
<! Doctype html> <html> <ead> <meta charset = "utf-8"> <ititle> request de domain </ title> <script src = "https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"> </cript> <script> $ (document) .Reyy (function (). $ ("bouton"). cliquez (function () {$ .ajax ({url: "http: // localhost: 8080 / test", succès: fonction (résultat) {$ ("# p1"). html (résultat);}});});}); </cript> Content </futton> </body> </html>3. La troisième façon est d'écrire un filtre filtre
package com.cci.market.common.filter; import java.io.ioexception; importer javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servlexception; import javax.servlet.servletreequest; import; javax.servlet.servletResponse; import javax.servlet.http.httpservletResponse; import org.springframework.sterreotype. init (filterConfig filterConfig) lève ServletException {} @Override public void dofilter (servletRequest req, servletResponse res, filterchain chaîne) lance ioException, servlexception {httpservletResponse réponse = (httpServletResponse) res; Response.sethEader ("Access-Control-Allow-Origin", "*"); Response.sethEader ("Access-Control-Allow-Methods", "Post, Get, Options, Delete, Put"); Response.sethEader ("Access-Control-MAX-Age", "3600"); Response.sethEader ("Access-Control-Allow-Headers", "X-Requested-with"); chaîne.Dofilter (req, res); } @Override public void destre () {// Todo Méthode générée automatiquement Stub}}4. Configuration du domaine croisé Nginx
Le domaine croisé Nginx est également relativement simple, il suffit d'ajouter la configuration suivante.
emplacement / {proxy_pass http: // localhost: 8080; if ($ request_method = 'Options') {add_header 'Access-Control-allow-Origin' '*'; add_header 'Access-Control-allow-Methods' 'Get, Post, Options'; add_header 'Access-Control-Allow-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Demande avec, if-modified-sice, Cache-Control, Content-Type, Content Range, Range, Token'; add_header 'Access-Control-Max-Age' 1728000; Add_header 'Content-Type' 'Text / PLAIN; charset = utf-8 '; add_header 'Content-Length' 0; retour 204; } if ($ request_method = 'post') {add_header 'Access-Control-allow-Origin' '*'; add_header 'Access-Control-allow-Methods' 'Get, Post, Options'; add_header 'Access-Control-Allow-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Demande avec, if-modified-sice, Cache-Control, Content-Type, Content Range, Range, Token'; add_header 'Access-Control-Expose-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Debest with, if-Modified-Since, Cache-Control, Content-Type, Content Range, Range, Token'; } if ($ request_method = 'get') {add_header 'Access-Control-allow-Origin' '*'; add_header 'Access-Control-allow-Methods' 'Get, Post, Options'; add_header 'Access-Control-Allow-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Demande avec, if-modified-sice, Cache-Control, Content-Type, Content Range, Range, Token'; add_header 'Access-Control-Expose-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Debest with, if-Modified-Since, Cache-Control, Content-Type, Content Range, Range, Token'; }}Où: Add_Header 'Access-Control-Expose-Headers' Assurez-vous d'ajouter l'en-tête que vous avez apporté lorsque vous avez demandé. Par exemple, le "jeton" dans cet exemple est en fait transmis de l'avant à l'arrière. Peu importe si vous ne vous en souvenez pas, le débogueur du navigateur aura des instructions détaillées.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.