浏览器出于安全的考虑,不允许跨域请求,试了网上很多种方法,还是觉得最直接的方法好,给响应头添加以下字段即可,浏览器端ajax发起请求无需添加额外的header。
// 响应
StringBuilder responseContext = new StringBuilder();
responseContext.append(base64Img);
StringBuilder response = new StringBuilder();
// 1) HTTP协议版本、状态代码、描述
response.append("HTTP/1.1").append(BLANK).append("200").append(BLANK).append("OK")
.append(CRLF);
// 2) 响应头(Response Head)
response.append("Server:km Server/0.0.1").append(CRLF);
response.append("Date:").append(new Date()).append(CRLF);
response.append("Content-type:text/html;charset=utf-8").append(CRLF);
// 正文长度:字节长度
response.append("Content-Length:").append(responseContext.toString().getBytes().length)
.append(CRLF);
// 这是允许跨域访问的响应头处理
response.append("Access-Control-Allow-Origin: *").append(CRLF);
response.append("Access-Control-Allow-Methods: POST,GET,OPTIONS,DELETE").append(CRLF);
response.append("Access-Control-Allow-Headers: X-Requested-With, Content-Type")
.append(CRLF);
// 3)正文之前
response.append(CRLF);
// 4)正文
response.append(responseContext);
System.out.println(responseContext);
// 输出流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(response.toString());
bw.flush();
bw.close();
socket.close();
解决跨域请求问题了,记录一下
猜你喜欢
转载自blog.csdn.net/yunxiang1224/article/details/89977410
今日推荐
周排行