GWT를 Restlet과 함께 사용하고 있고 Restsver에 삭제를 보내려고합니다. 이 보내는 내 클라이언트 코드입니다 :브라우저가 PUT 또는 DELETE 대신 OPTIONS을 전송합니다.
private void recipeDeleteButton() {
String id = views.getViewRecipeDetail().getRecipeId().getText();
ClientResource res = new ClientResource(Rest.RECIPE_CLIENT_RESOURCE_LOCAL + id);
res.setOnResponse(new Uniform() {
@Override
public void handle(Request request, Response response) {
System.out.println(response.getStatus().getDescription());
}
});
res.delete();
}
하지만이 검사 할 때 내 파이어 폭스는 말한다 : 나는 이미 포스트 여기 발견
[22:28:28.796] OPTIONS http://localhost:8182/recipe/35 [HTTP/1.1 405 Method Not Allowed 3ms]
: browsers send Options instead of Post after changing http header하지만이 해결되지 않는 내 문제. POST와 GET을 위해서는 작동하지만 Firefox Addon에서만 SOP 문제를 해결할 수 있습니다. 새로운 헤더를 추가 할 수도 있지만 PUT, DELETE 및 OPTIONS를 추가해도이 문제는 해결되지 않습니다.
사전에 이에 대한 해결책은 감사
편집
나는 서버 측에이 같은 시도했지만, 그는 여전히 OPTION의 REQ 전송 (405)
Series<Header> responseHeaders = (Series<Header>) getResponse().getAttributes().get("org.restlet.http.headers");
if (responseHeaders == null) {
responseHeaders = new Series<Header>(Header.class);
responseHeaders.add(new Header("Access-Control-Allow-Origin", "*"));
responseHeaders.add(new Header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS"));
getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders);
}
나는 그것을 시도했지만 작동하지 않는다, 여전히 http 405 – pfu
문제는 http : // localhost : 8182/recipe/35에 OPTIONS 요청에 대한 핸들러가 없다는 것이다. (나는 GET을위한 핸들러가 있다고 가정한다. 지우다). 쉬운 방법은 경로에 관계없이 모든 OPTIONS 요청에 대해 서버에서 전역 처리기를 만들거나/recipe/35에 대한 OPTIONS 처리기를 만드는 것입니다. – YoK
당신은 맞습니다. 정말 그렇게 간단합니다. 방금 주석 주석 위에 Option Annotation을 추가했습니다. 매우 감사합니다! – pfu