2015-08-05 3 views
1

Я получаю следующее сообщение об ошибке из браузера отладчика:Невозможно получить данные POST из углового приложения для воспроизведения! Framework

Происхождение http://localhost:8000 не найден в заголовке Access-Control-Allow-Origin.

Однако я есть установить заголовок в моем Global.java файл в моем API:

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); 
    } 
} 

Вот мой 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! документация будет ... ладно.

+0

вы пытались Goggle с этой ошибкой? Настройки CORS неверны на api – charlietfl

+0

Да, я сделал, на самом деле у меня есть настройки CORS от Google, что я поставил неправильно? – user2324937

+0

убедитесь, что разрешены запросы OPTIONS. Я ничего не знаю о 'play', но проблема, безусловно, в CORS https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS – charlietfl

ответ

1

первым добавить Предполетную просьбу об

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; 
    } 

вызова не работает на внутренней ошибке сервера

Смежные вопросы