gpt4 book ai didi

javascript - 无法将数据从 Angular 应用程序发布到 Play!框架

转载 作者:行者123 更新时间:2023-11-30 08:01:36 25 4
gpt4 key购买 nike

我从浏览器调试器中收到以下错误:

Origin http://localhost:8000 not found in Access-Control-Allow-Origin header.

但是我已经在 API 的 Global.java 文件中设置了 header :

Global.java

@Override
public Promise<SimpleResult> call(Http.Context ctx) throws java.lang.Throwable {
Promise<SimpleResult> result = this.delegate.call(ctx);
Http.Response response = ctx.response();
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
return result;
}

这是我正在使用的 API 路线。

路线

POST        /api/users/insertuser                      @controllers.UserController.insertUser

这是 Controller 方法:

UserController.java

@BodyParser.Of(BodyParser.Json.class)
public Result insertUser() {
JsonNode json = request().body().asJson();
String email = json.findPath("email").asText();
String username = json.findPath("username").asText();
String password = json.findPath("password").asText();
if(email == null || username == null || password == null) {
return badRequest("Missing parameter[s]");
} else {
User user = new User(username, email, false, password, getDate(), getDate());
repo.insertUser(user);
return getUserByEmail(email);
}
}

这是我的 Angular 应用程序的 API 调用:

userapiservice.js

var factory = {};
var baseUrl = 'http://127.0.0.1:9000/api/users/';

factory.insertUser = function (user) {
return $http({
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
url: baseUrl + 'insertuser/',
params: { username: user.username, email: user.email, password: user.password }
});
};

我遗漏了什么/做错了什么吗?尝试了几个浏览器,已经坚持了大约一周了,我一直在自学,最后我找到了 Play!文档是...好吧。

最佳答案

首先添加预检请求

OPTIONS   /*all                                     controllers.Application.preflight(all)
<小时/>
public static Result preflight(String all) {
response().setHeader("Access-Control-Allow-Origin", "*");
response().setHeader("Allow", "*");
response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS, PATCH");
response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent, access_token, mode");
return ok();
}

但请记住

@Override
public Promise<SimpleResult> call(Http.Context ctx) throws java.lang.Throwable {
Promise<SimpleResult> result = this.delegate.call(ctx);
Http.Response response = ctx.response();
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
return result;
}

由于内部服务器错误,调用不起作用

关于javascript - 无法将数据从 Angular 应用程序发布到 Play!框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com