前言
項目中使用webuploader進行文件上傳,需要用到跨域,查看webuploader的issues發現是支持上傳的,但是他們寫的回復都是不清不白的,有點迷糊;想了半天才知道咋回事,也可能是我比較笨,再次記錄下java中詳細的處理。
webuploader進行上傳,會執行2個請求;一個option請求,一個post(根據你的webuploader的配置method 值決定),需要在option請求中對響應頭進行處理,post響應頭也進行響應的處理。
以servlet為例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
@WebServlet (description = "文件上傳" ,value = { "/file/upload" }) public class FileUpload extends HttpServlet { public FileUpload() { super (); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader( "Access-Control-Allow-Origin" , "*" ); resp.setHeader( "Access-Control-Allow-Methods" , "*" ); resp.setHeader( "Access-Control-Allow-Headers" , "x-requested-with,content-type" ); resp.setContentType( "application/json" ); resp.setCharacterEncoding( "utf-8" ); //文件上傳邏輯 } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader( "Access-Control-Allow-Credentials" , "false" ); resp.setHeader( "Access-Control-Allow-Origin" , "*" ); resp.setHeader( "Access-Control-Allow-Methods" , "*" ); resp.setHeader( "Access-Control-Allow-Headers" , "x-requested-with,content-type" ); resp.setContentType( "application/json" ); resp.setCharacterEncoding( "utf-8" ); super .doOptions(req, resp); } |
再次測試跨域上傳,正常
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:http://changeself.net/articles/webuploader-cros-java/