如何解决java vert.x中的CORS问题

鲍勃·谢克诺达斯

我在 localhost:8080 上有一个 vertx 后端服务器来响应 REST 请求。

发送 GET 请求时,一切正常。

但是在带有参数的 DELETE 请求中,我收到 CORS 错误...

我的后端服务器如下所示:

@Override
public void start(Future<Void> fut) {
    Router router = Router.router(vertx);
    router.route("/").handler(routingContext -> {
        HttpServerResponse response = routingContext.response();
        response.putHeader("content-type", "text/html").end("<h1>Hello from my first Vert.x 3 application</h1>");
    });

    router.get("/api/whiskies").handler(this::getAll);
    router.delete("/api/whiskies/:id").handler(this::deleteOne);

    vertx.createHttpServer().requestHandler(router::accept).listen(
            config().getInteger("http.port", 8080), result -> {
                if (result.succeeded()) {
                    fut.complete();
                } else {
                    fut.fail(result.cause());
                }
            });
}

private void getAll(RoutingContext routingContext) {
    routingContext.response().putHeader("content-type", "application/json; charset=utf-8")
                             .putHeader("Access-Control-Allow-Origin", "*")
                             .end(Json.encodePrettily(products.values()));
}


private void deleteOne(RoutingContext routingContext) {
    Integer idAsInteger = Integer.valueOf(routingContext.request().getParam("id"));
    products.remove(idAsInteger);
    routingContext.response().putHeader("Access-Control-Allow-Origin", "*")
                             .setStatusCode(204).end();
    }
}

我希望 .putHeader("Access-Control-Allow-Origin", "*") 部分可以解决所有 CORS 问题,但不知何故只适用于代码的 GET 部分......

我的前端是一个在 localhost:4200 上运行的 Angular5 应用程序,如下所示:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders} from '@angular/common/http';

const httpOptions = {
    headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};

@Injectable()
export class HttpService {
  
  constructor(private http:HttpClient) {}
  
  getWhiskies() {
	  return this.http.get('http://localhost:8080/api/whiskies');
  }
  
  deleteWhisky(id :number) {
	  return this.http.delete('http://localhost:8080/api/whiskies/' + id);
  }
	
}

鲍勃·谢克诺达斯

好的,所以我能够通过定义允许的方法以及“Content-Type”标头来修复它。

参考以下链接:

github 顶点示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我该如何在vert.x中登录vert.x

来自分类Dev

从Java类运行vert.x verticle

来自分类Dev

如何禁用Vert.x的BlockedThreadChecker?

来自分类Dev

如何解决这个问题?Java作业

来自分类Dev

如何阻塞线程以等待vert.x中的响应?

来自分类Dev

如何处理 vert-x 中的 StompServerHandlers

来自分类Dev

*Vert.x*:如何在同步代码中处理

来自分类Dev

如何使用 Vert.x 从 EventBus 中获取结果

来自分类Dev

如何解决来自Mapbox的Surface API中的CORS问题?

来自分类Dev

动态顶点-如何为简单的vert.x游戏正确设计vert.x架构?

来自分类Dev

动态顶点-如何为简单的vert.x游戏正确设计vert.x架构?

来自分类Dev

如何解决Java错误中的错误?

来自分类Dev

如何解决Java中的管道损坏?

来自分类Dev

如何解决Java中的NumberFormatException?

来自分类Dev

“如何解决错误:';' 预计在 Java 中?”

来自分类Dev

如何解决Strapi的CORS政策问题?

来自分类Dev

Tomcat与Vert.x

来自分类Dev

Vert.X安全

来自分类Dev

使用Vert.x for Java的Redis Client API是否良好?

来自分类Dev

Vert.x:从Java部署JavaScript Verticle失败

来自分类Dev

如何使用Hibernate与Vert.x无阻塞ORM

来自分类Dev

如何解决java中的java.lang.ArrayIndexOutOfBoundsException?

来自分类Dev

Java:如何解决读写器问题?

来自分类Dev

java.lang.NullPointerException 问题如何解决

来自分类Dev

Vert.x事件总线的问题

来自分类Dev

如何解决Ionic2中的CORS问题和JSONP问题

来自分类Dev

如何解决Ionic2中的CORS问题和JSONP问题

来自分类Dev

Java如何解决垃圾回收中的保留周期?

来自分类Dev

如何解决Java 8中的此错误?