Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java URL未连接到我的spring启动应用程序_Java_Spring_Spring Mvc_Spring Boot - Fatal编程技术网

Java URL未连接到我的spring启动应用程序

Java URL未连接到我的spring启动应用程序,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,设置一个新的spring boot应用程序时,我总是觉得我必须要把嘴放好才能让它第一次工作 我的angular应用程序正在做一个帖子,我知道它正在击中我的控制器,因为当我执行get时,我收到一个错误,说get不允许/登录 这是我在控制器中的方法,我正试图从Angular应用程序调用它 @RequestMapping(value = "/login", method = RequestMethod.POST) @ResponseBody public String login(@RequestPa

设置一个新的spring boot应用程序时,我总是觉得我必须要把嘴放好才能让它第一次工作

我的angular应用程序正在做一个帖子,我知道它正在击中我的控制器,因为当我执行get时,我收到一个错误,说get不允许/登录

这是我在控制器中的方法,我正试图从Angular应用程序调用它

@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public String login(@RequestParam(NetworkKeyNames.KEY_PAYLOAD) String payload) throws IOException {
    log.error("Payload=" + payload);
    TypeReference<Map<String, String>> typeRef = new TypeReference<Map<String, String>>() {};
    Map<String, String> payloadMap = objectMapper.readValue(payload, typeRef);
    String username = payloadMap.get(NetworkKeyNames.KEY_USERNAME);
    String password = payloadMap.get(NetworkKeyNames.KEY_PASSWORD);

    String result = securityService.login(username, password);
    return result;
}
所以看起来好像它映射到了我的方法,但是第一行中的日志从未被调用,我的断点也从未被命中


我遗漏了什么?

调用您的REST服务的客户端启用了CORS,因此它发送的是初始选项调用,而不是控制器配置的POST调用,正如您在发布的日志语句的第一行中所看到的那样

(选项//本地主机:8093/登录)@6bc51cc8


您需要禁用CORS,或者将CORS支持添加到RESTAPI,或者将Apache放在应用程序前面,以转发对UI和从同一来源(域名)调用的服务的请求因此不会触发CORS检查请求。

您可以从Angular应用程序粘贴一些有关请求的信息吗?它看起来像什么?在您的web浏览器的开发者工具中可以找到哪些请求信息?@SzymonStepniak谢谢,添加了Angular调用的相关信息。所以您发送的是一个值为JSON对象的POST参数?为什么?为什么不将JSON作为请求主体发送呢?让Spring为您解开JSON?因此,方法应该是
登录(@RequestBody-Credentials)
@jbnize,因为它给了我情感上的安全感。我喜欢处理我自己的格式错误。即使你自己解析JSON,至少也要将它作为请求体发送。不作为请求参数。这真的很笨拙吗?您不会将XML作为JSON对象的属性作为请求参数发送,是吗?哇!谢谢你,我错过了选择的意义。你知道一种方法吗?我可以在测试配置文件中允许我的整个应用程序使用CrossOrigin,然后在我的生产服务器上重新启用它?正如我提到的,如果你使用相同的doamin(相同的源代码)通过Apache运行所有请求并将REST服务的URI转发给SpringBoot服务实例,这样您就不需要CORS了。我会为本地、开发、STG和PRD设置这样做。否则,您可以将CORS支持添加到您的服务中(我不会),或者在JS客户端中禁用CORS检查。
2018-01-18 14:33:24.865 DEBUG 27096 --- [qtp779343339-17] o.s.b.w.f.OrderedRequestContextFilter    : Bound request context to thread: Request(OPTIONS //localhost:8093/login)@6bc51cc8
2018-01-18 14:33:24.866 DEBUG 27096 --- [qtp779343339-17] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing OPTIONS request for [/login]
2018-01-18 14:33:24.866 DEBUG 27096 --- [qtp779343339-17] o.s.b.a.e.mvc.EndpointHandlerMapping     : Looking up handler method for path /login
2018-01-18 14:33:24.869 DEBUG 27096 --- [qtp779343339-17] o.s.b.a.e.mvc.EndpointHandlerMapping     : Did not find handler method for [/login]
2018-01-18 14:33:24.869 DEBUG 27096 --- [qtp779343339-17] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /login
2018-01-18 14:33:24.869 DEBUG 27096 --- [qtp779343339-17] s.w.s.m.m.a.RequestMappingHandlerMapping : Returning handler method [public java.lang.String pizzainthecloud.pizzaplace.controller.PizzaPlaceController.login(java.lang.String) throws java.io.IOException]
2018-01-18 14:33:24.869 DEBUG 27096 --- [qtp779343339-17] o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of singleton bean 'pizzaPlaceController'
2018-01-18 14:33:24.870 DEBUG 27096 --- [qtp779343339-17] o.j.s.OpenEntityManagerInViewInterceptor : Opening JPA EntityManager in OpenEntityManagerInViewInterceptor
2018-01-18 14:33:24.871 DEBUG 27096 --- [qtp779343339-17] o.s.web.servlet.DispatcherServlet        : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
2018-01-18 14:33:24.871 DEBUG 27096 --- [qtp779343339-17] o.j.s.OpenEntityManagerInViewInterceptor : Closing JPA EntityManager in OpenEntityManagerInViewInterceptor
2018-01-18 14:33:24.871 DEBUG 27096 --- [qtp779343339-17] o.s.orm.jpa.EntityManagerFactoryUtils    : Closing JPA EntityManager
2018-01-18 14:33:24.871 DEBUG 27096 --- [qtp779343339-17] o.s.web.servlet.DispatcherServlet        : Successfully completed request
2018-01-18 14:33:24.872 DEBUG 27096 --- [qtp779343339-17] o.s.b.w.f.OrderedRequestContextFilter    : Cleared thread-bound request context: Request(OPTIONS //localhost:8093/login)@6bc51cc8