топор ios сообщение 403 запрещено, но почтальон работает - PullRequest
1 голос
/ 13 июля 2020

использовать топор ios сообщение получить 403 запрещено, но почтальон и топор ios все работает

Сервер: Spring Boot localhost: 8080

Интернет: Vue. js + Ax ios localhost: 80

Spring Boot CORS CONFIG:

@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedHeaders("*")
                .allowedMethods("*")
                .maxAge(1800)
                .allowedOrigins("http://localhost:80/");
    }
}

Vue. js ProxyTable:

proxyTable: {
  '/api':{
    target: "http://localhost:8080/",
    changeOrigin:true,
  }},

Ax ios fun c:

  doLogin(){
    axios({
      method: 'post',
      url: '/api/te',
      data: {
        userNumber: 'hi'
      }
    });

Spring Boot Controller:

@PostMapping("/te")
public String Test(@RequestBody HashMap<String,String> map) {
    return map.get("userNumber");
}

затем в MSEdge localhost: 80 /:

403 запрещено

но в почтальоне работает хорошо:

почтальон работает

Пробовал 3 часа, а теперь очень устал .. .

1 Ответ

0 голосов
/ 13 июля 2020

Хорошо, Я РЕШИЛ ЭТО СЕЙЧАС !!!!

это потому, что я настроил CORS

allowedOrigins("http://localhost:80/");

и

proxyTable: {
  '/api':{
    target: "http://localhost:8080/",
    changeOrigin:true,
  }},

Причина:

  1. allowedOrigin должен быть http://localhost:80, добавление '/' в конце является ошибкой.
  2. proxyTable.'/api'.changeOrigin:true просто установит заголовок хоста в целевой, НЕ установите заголовок Origin в target, это ОТЛИЧНО от метода allowedOringins в SpringBoot CORS CONFIG, источником вашего запроса по-прежнему является htpp: // localhost (страница, которая запрашивает)。

, поэтому правильный код:

@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedHeaders("*")
                .allowedMethods("*")
                .maxAge(1800)
                .allowedOrigins("http://localhost");
    }
}

и

proxyTable: {
  '/api':{
    target: "http://localhost:8080",
    changeOrigin:true,
  }},

; P

...