각 클라이언트로부터 안정적인 리소스의 PUT 요청을 사용하는 동안 'HTTP 403 금지'오류가 발생합니다. 저지를 사용하여이 편안한 리소스를 만들었고 응용 프로그램 서버로 tomcat 7을 사용하고 있습니다. 여기 내 각 JS 내가 같은 DELETE, POST 등의 HTTP 호출의 다른 유형을 발견하고 제대로 작동하고 싶어HTTP 403 저지 저지 (put) 요청시
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
});
};
스 니펫입니다
@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");
}
}
}
: 여기
내 자원 코드 . PUT 호출에만 문제가 있습니다.
왜'PUT '으로'Multipart/form-data'를 게시하고 있습니까? 대신 'POST'여야합니다. –
이 put 요청이 작동 중이며 더 이상 작동하지 않습니다. 이 리소스에 대한 모든 요청을 더 이상 작동하지 않게주의를 기울이고 싶습니다. 그래서이 문제는 바람둥이 또는 저지 자원 구성과 관련이 있다고 생각합니다. –