【发布时间】:2015-10-28 22:01:56
【问题描述】:
我从浏览器调试器中收到以下错误:
在 Access-Control-Allow-Origin 标头中找不到来源 http://localhost:8000。
但是我已经在我的 API 的 Global.java 文件中设置了标题:
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
这里是控制器方法:
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!文档是...好的。
【问题讨论】:
-
您是否尝试过 goggle 并出现该错误? api上的CORS设置错误
-
是的,我确实这样做了,实际上我从 Google 获得了这些 CORS 设置,我设置错了什么?
-
确保允许 OPTIONS 请求。我对
play一无所知,但问题肯定是CORS developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
标签: javascript java json angularjs playframework