zoukankan      html  css  js  c++  java
  • 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代码。
    
  • 相关阅读:
    test
    VS dll 引用依赖
    Git配置
    编码--文字输入的前因后果
    base64相关
    异或
    UNION / UNION ALL 区别
    数据库使用规范
    chrome插件开发学习(一)
    缓存穿透 缓存雪崩 缓存并发
  • 原文地址:https://www.cnblogs.com/mozq/p/11864129.html
Copyright © 2011-2022 走看看