角度のあるクライアントからの安らかなリソースのPUTリクエストを消費しようとしているときに、「HTTP 403禁止」エラーが発生しました。私はジャージーを使用してこの安らかなリソースを作成し、アプリケーションサーバーとしてtomcat 7を使用しています。ここでHTTP 403禁止リクエスト時の禁止ジャージ
は、私のリソースのコードです:
@Path("/doc")
public class DocResource {
@PUT
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("file/upload")
public Response uploadFile(MultipartBody body, @QueryParam("ID") long ID) {
try {
Attachment attachment = body.getAttachment("file");
MultivaluedMap<String, String> headers = attachment.getHeaders();
String fileName = getFileName(headers);
DataHandler dataHandler = attachment.getDataHandler();
InputStream inputStream = dataHandler.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] tmp = new byte[4096];
int ret = 0;
while ((ret = inputStream.read(tmp)) > 0) {
bos.write(tmp, 0, ret);
}
// TODO - Save contents as process attachment
byte[] contents = bos.toByteArray();
return Response.ok(getDocumentService().createAttachment(ID, fileName, contents, attachment.getContentType()), MediaType.APPLICATION_JSON).build();
} catch (Exception e) {
return handleException(e, "failed to upload Attachement");
}
}
}
ここに私の角のjsが
this.uploadFile = function uploadFile(callback, ID, file) {
var baseRestURL="http://localhost:8080/rest/doc"
// resource query
var query ;
// create form data
var formData = new FormData();
formData.append('file', file);
// set up the resource
var resource = $resource(baseRestURL + '/file/upload', {
ID: ID
}, {
'ID': ID,
'upload': {
method: 'PUT',
headers: {
'Content-Type': 'multipart/form-data'
}
}
});
resource.upload(query, formData).$promise.then(function success(response) {
if (callback) callback(response);
}, function error() {
//TODO handle error
});
};
スニペットている私は、このような、DELETE POSTやGETなどのHTTP呼び出しの他のタイプが正常に動作していることがわかりたいです。私はPUT呼び出しにのみ問題があります。
なぜ 'マルチパート/フォームデータ 'を' PUT'でポストしていますか?代わりに 'POST'でなければなりません。 –
このput要求は機能していましたが、現在は動作していません。私は、このリソースへのすべてのput要求がもはや機能していないことに注目したいと思います。だから、私はこの問題が風刺漫画やジャージのリソース構成に関係していると思う。 –