CORS跨域请求

CORS跨域请求

允许跨域请求

只需要在服务器设置响应头Access-Control-Allow-Origin, 不然的话可以从服务器拿到响应,但是浏览器不会把这个响应显示出来。

(index):1 Access to XMLHttpRequest at 'http://localhost:9001/demo/name' from origin 'http://localhost:9002' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
方案:
	response.setHeader("Access-Control-Allow-Origin", "http://localhost:9002");
	请求响应中会携带:Access-Control-Allow-Origin: http://localhost:9002
	访问成功,可以获取数据。
Access-Control-Allow-Origin: http://localhost:9002
Content-Length: 6
Content-Type: text/html;charset=UTF-8
Date: Fri, 01 Nov 2019 01:24:33 GMT

跨域请求携带cookie

//服务器端允许跨域请求携带cookie。
response.setHeader("Access-Control-Allow-Credentials", "true");
# 同源访问,会携带cookie。但是不同源的访问服务器不会响应cookie。尽管代码中设置了。
# http://localhost:9001/demo/name
Access-Control-Allow-Origin: http://localhost:9002
Content-Length: 6
Content-Type: text/html;charset=UTF-8
Date: Fri, 01 Nov 2019 01:24:33 GMT
Set-Cookie: age=25

# 不同源访问,并没有返回cookie
Access-Control-Allow-Origin: http://localhost:9002
Content-Length: 6
Content-Type: text/plain;charset=UTF-8
Date: Fri, 01 Nov 2019 01:15:22 GMT
/*
	服务端
*/
@RestController
@RequestMapping("/demo")
public class DemoController {
    @RequestMapping("/name")
    public String name(HttpServletResponse response){
        response.setHeader("Access-Control-Allow-Origin", "http://localhost:9002");
//        response.setHeader("Access-Control-Allow-Credentials", "true");
        return "刘备";
    }
}

bugs

Access to XMLHttpRequest at 'http://localhost:9001/demo/name' from origin 'http://localhost:9002' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

# 请求头
Accept: */*
Origin: http://localhost:9002
Referer: http://localhost:9002/
Sec-Fetch-Mode: cors
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
# 响应头
Content-Length: 6
Content-Type: text/plain;charset=UTF-8
Date: Thu, 14 Nov 2019 00:35:24 GMT
# 响应体
刘备

现象:浏览器可以拿到服务器的响应但是因为浏览器的同源策略,浏览器不会把响应给js代码。
posted @ 2019-11-15 08:27  没有理由不会呀  阅读(825)  评论(0编辑  收藏  举报