Springboot решает Ajax Cross-Domain для вашей ссылки. Конкретный контент заключается в следующем
1. Первый метод
1. Напишите конфигурацию, которая поддерживает перекрестные запросы
Импорт org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.corsregistry; import org.springframework.web.servlet.config.annotation.webmvcconfuredapter;/*** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *** ** ** @Time 2017-07-13 */ @ConfigurationPublic Class CorsConfig Extends webmvcconfigurerAdapter {static final String Origins [] = new String [] {"Get", "," Put "," Delete "}; @Override public void AddCorsMappings (реестр CorsRegistry) {Registry.Addmapping ("/**"). AllorOrigins ("*"). AllingCredentials (true). AllowedMethods (Origins) .maxage (3600); }}2. Интерфейс HTTP -запроса
@Restcontrollerpublic class hellocontroller {@autowired helloservice helloservice; @Getmapping (value = "/test", products = mediaType.application_json_utf8_value) public String Query () {return "hello"; }}2. Второй метод (рекомендуется)
PS: у первого типа есть проблема. Когда сервер бросает 500, все еще возникает проблема с доменом.
@SpringbootApplication@componentscan@enabledIscOveryClientPublic 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); вернуть corsconfiguration; } / ** * Фильтр Cross-Domain * * @return * / @bean public corsfilter corsfilter () {urlbasedcorsconfigurationsource source = new urlbasedcorsconfigurationsource (); Source.registerCorsConfiguration ("/**", BuildConfig ()); // 4 вернуть новый CorsFilter (источник); }}2. index.html
<! Doctype html> <html> <head> <meta charset = "UTF-8"> <Title> Cross-Domain запрос </title> <script src = "https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"> </script> <script> $ (docome) $ ("Кнопка"). Click (function () {$ .ajax ({url: "http: // localhost: 8080/test", success: function (result) {$ ("#p1"). html (result);}});});}); <//script> </head> <body> <p id = "p1) </ptuth> </ptuth> </ptuth> </ptnoge> </ptuth> </ptuth> </ptnoge> </ptnoge> </ptuth> </ptuth> </ptuth> </ptuth> </get> </pttond) Содержание </button> </body> </html>3. Третий способ - написать фильтр фильтра
пакет com.cci.market.common.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; импорт javax.servlet.filterConfig; import javax.servlet.servletexception; import javax.servlet.servletrequest; javax.servlet.servletresponse; import javax.servlet.http.httpservletresponse; import org.springframework.stereotyle.component;/** * обрабатывать задачи Compromain * @author mr.zheng * @date 2016/08/08 */ @ @ @ @ComponerPul init (filterConfig FilterConfig) Throws ServletException {} @Override public void dofilter (ServletRequest REQ, ServletResponse Res, FilterChain Chain) Throws IoException, ServletException {httpservletresponse response = (httpservesponse) rep; response.setheader ("Access-Control-Oright-Origin", "*"); response.setheader ("Access-Control-Methods", "Post, Get, Options, Delete, Pult"); response.setheader ("Access-Control-Max-Age", "3600"); response.setheader («Контроль доступа к головам», «x-requested-with»); chain.dofilter (req, res); } @Override public void destress () {// todo автоматически сгенерированный метод}}}}4. Конфигурация кросс-домена NGINX
Nginx Cross-Domain также относительно прост, просто добавьте следующую конфигурацию.
местоположение/{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, пользовательский агент, x-requested-with, if-модифицированный, контроль кэша, контент-диапазон, диапазон, токен'; add_header 'Access-Control-Max-Age' 1728000; add_header 'content-type' '' text/plain; charset = utf-8 '; add_header 'content-dlength' 0; возврат 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, пользовательский агент, x-requested-with, if-модифицированный, контроль кэша, контент-диапазон, диапазон, токен'; add_header 'Access-Control-Expose-Headers' 'DNT, X-Customheader, Keep-Alive, пользовательский агент, x-requested-with, if-модифицированный, контроль от кеша, контент-диапазон, диапазон, токен'; } 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, пользовательский агент, x-requested-with, if-модифицированный, контроль кэша, контент-диапазон, диапазон, токен'; add_header 'Access-Control-Expose-Headers' 'DNT, X-Customheader, Keep-Alive, пользовательский агент, x-requested-with, if-модифицированный, контроль от кеша, контент-диапазон, диапазон, токен'; }}Где: add_header 'Access-Control-Expose Headers. Обязательно добавьте заголовок, который вы принесли при запросе. Например, «токен» в этом примере фактически передается с передней части до заднего конца. Неважно, если вы не можете вспомнить это, у отладчика браузера будут подробные инструкции.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.