我的web应用程序有一个小问题:一个连接到Spring BootAPI的angular2应用程序。
Failed to load http://localhost:8080/deliveryMan/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
@RestController
@RequestMapping(value = "/deliveryMan")
@CrossOrigin
public class DeliveryManController {
@Autowired
DeliveryManService deliveryManService;
@RequestMapping(value = "/getAllDeliveryMan", method = RequestMethod.GET)
public Iterable<DeliveryMan> getAllDeliveryMan(){
return deliveryManService.findAll();
}
@RequestMapping(method = RequestMethod.PUT, consumes = "application/json")
public DeliveryMan addDeliveryMan(@RequestBody DeliveryMan deliveryMan) throws InvalidObjectException {
deliveryManService.save(deliveryMan);
return deliveryMan;
}
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class MyApp{
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
private apiUrl = 'http://localhost:8080/deliveryMan/';
getAll(): Promise<DeliveryMan[]> {
const url = this.apiUrl + 'getAllDeliveryMan';
return this.http.get(url)
.toPromise()
.then(response => response.json().data as DeliveryMan[])
.catch(this.handleError);
}
saveDeliveryMan(deliveryMan: DeliveryMan): Promise<DeliveryMan> {
const url = this.apiUrl;
return this.http.put(url, JSON.stringify(deliveryMan), this.headers)
.toPromise()
.then(() => deliveryMan)
.catch(this.handleError);
}
如何解决它,这样我就可以使用PUT方法而不会得到这个错误?
在项目中创建corsfilter.java
文件。
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CORSFilter implements Filter {
/**
* CORS filter for http-request and response
*/
public CORSFilter() {
}
/**
* Do Filter on every http-request.
*/
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "access_token, authorization, content-type");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
/**
* Destroy method
*/
@Override
public void destroy() {
}
/**
* Initialize CORS filter
*/
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
您可以参考这篇文章的角度2Spring引导登录CORS问题
我的SimpleCorsFilter如下所示: 机智的邮递员它工作正常: 邮递员得到请求 restlet.com/blog/2016/09/27/how-to-fix-cors-problems/ 并调查了StackOverflow上发布的几个类似问题。
问题内容: 我的Web应用程序上有一个小问题:一个与spring boot API连接的angular2应用程序。 我无法从angular2应用访问我的请求。我收到此错误: Java代码: angular2代码: 为了解决该问题,我在控制器类中添加了@CrossOrigin。它解决了getAll方法的问题,但没有解决其他方法的问题。 如何解决它,以便我可以使用PUT方法而不会出现此错误? 问题答案
我知道对此有很多问题。但是,我仍然无法解决应用程序中的跨源块问题。我已经在Spring Boot应用程序中实现了所有的过滤器,但问题仍然存在。有人能指引我走向正确的道路吗? 角度应用-http://localhost:4200/auth Spring启动应用程序-http://localhost:8082/app1 主类 Cors过滤器类 控制器类 应用yml 角服务部件
我的网页(wp1)有一个iframe。iframe的来源是另一个网页(wp2)。我在wp1上有一些javascript函数,试图操纵wp2的内容。然而,浏览器会让“阻止原点为空的帧”访问跨原点帧我怎么才能绕过这个?
我有一个Spring Boot项目,使用Jersey作为我的REST服务,并使用AngularJS进行我的前端开发。当我在不使用任何控制器的情况下运行它并转到index.html(位于resource/statig/index.html中)时,它运行得很好。当我添加一个控制器时,它呈现给出字符串“index.html”作为输出。Spring Boot配置: 球衣配置: 控制器类:
我有一个,我希望将用户的输入限制为纯数字或小数最多2位的数字。 基本上,我要求的是一个价格输入。 我想避免做正则表达式。有办法做到吗?