javascript – 不支持请求方法’OPTIONS’ – Spring Boot Application
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 不支持请求方法’OPTIONS’ – Spring Boot Application,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3411字,纯文字阅读大概需要5分钟。
内容图文
![javascript – 不支持请求方法’OPTIONS’ – Spring Boot Application](/upload/InfoBanner/zyjiaocheng/810/ea49a6bd3a4d4047baad7a5220c4ed55.jpg)
我在服务器端使用Spring Boot,在客户端使用Angularjs,我使用Filter配置Spring Boot应用程序CORS,它适用于GET,POST方法,但是,当我尝试使用$http模块发送PUT请求时,我得到了这个在我的浏览器控制台:
注意:url = http://localhost:8080/localbusinessusers/[object%20Object]
OPTIONS url
(anonymous function) @ angular.js:11442sendReq @
angular.js:11235serverRequest @ angular.js:10945processQueue @
angular.js:15552(anonymous function) @ angular.js:15568Scope.$eval @
angular.js:16820Scope.$digest @ angular.js:16636Scope.$apply @
angular.js:16928done @ angular.js:11266completeRequest @
angular.js:11464requestLoaded @ angular.js:11405 app.html:1
XMLHttpRequest cannot load
url. Response
for preflight has invalid HTTP status code 405 angular.js:11442 XHR
failed loading: PUT
“url“.
我在Spring Boot控制台上得到了这个:
2016-03-08 23:19:51.212 WARN 27044 — [ XNIO-2 task-2]
o.s.web.servlet.PageNotFound : Request method ‘OPTIONS’
not supported
我的CORS过滤器:
package com.datcom.fouras;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
@Component
public class CorsFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "http://localhost");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, X-Custom-Header");
chain.doFilter(req, res);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
我的RestController中的REST方法:
@RequestMapping(value = "/localbusinessusers", method = RequestMethod.PUT)
public LocalBusinessUser update(LocalBusinessUser localBusinessUser) {
log.debug("REST request to update a local business user : {}", localBusinessUser);
if (localBusinessUser.getId() == null) {
return save(localBusinessUser);
} else {
LocalBusinessUser localBusinessUser2 = localBusinessUserRepository.findOne(localBusinessUser.getId());
localBusinessUser2 = localBusinessUser;
return localBusinessUserRepository.saveAndFlush(localBusinessUser2);
}
}
最后,我的$http请求:
$http.put('http://localhost:8080/localbusinessusers/' + localBusinessUser)
.success(function (data, status, headers) {
console.log('data: ' + data);
})
.error(function (data, status, header, config) {
console.log('data: ' + data);
console.log('status: ' + status);
console.log('header: ' + header);
console.log('config: ' + config);
});
注意:
PUT请求正在使用高级REST客户端
解决方法:
如果禁止选项请求,则可以将DispatcherServlet配置为通过将其添加到application.properties来调度所有选项请求:
spring.mvc.dispatch-options-request=true
有关使用Spring Boot的选项请求和Spring MVC的更多信息,有一个很好的帖子为Handling Options Request using Spring Boot
您还可以尝试本文中的示例,通过创建一个简单的控制器来为所有选项请求返回NO_CONTENT来处理CORS和支持选项请求:http://dontpanic.42.nl/2015/04/cors-with-spring-mvc.html
内容总结
以上是互联网集市为您收集整理的javascript – 不支持请求方法’OPTIONS’ – Spring Boot Application全部内容,希望文章能够帮你解决javascript – 不支持请求方法’OPTIONS’ – Spring Boot Application所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。