CORS Access-Control-Allow-Origin缓存问题

时间:2015-11-04 12:17:40

标签: apache caching cors

关于多域访问chrome中的同一服务器文件是一个问题。

======

server:apache(支持 CORS

文件网址:www.a.com/a.file

多域名:b.com,c.com ......

======

情况:(在chrome中)

  1. b.com 访问a.file:成功

    然后 c.com 访问a.file:失败

  2. b.com 访问a.file:成功。

    然后清除chrome的缓存

    c.com 访问a.file:成功

  3. b.com 使用 http 成功访问a.file。

    然后 b.com 使用 https 访问a.file:失败(如1)

  4. b.com 使用 http 成功访问a.file。

    然后清理缓存的chrome,

    b.com 使用 https 访问a.file:失败(如2)

  5. 在情况1中,这是请求标头。我注意到请求将从缓存中访问文件,而 Access-Control-Allow-Origin都是http://www.b.com 。也许这是这个问题的关键。但我不知道......

    b.com

    Request URL:www.a.com/a.file
    Request Method:GET
    Status Code:200 OK (from cache) <-here
    
    Response Headers
    Accept-Ranges:bytes
    Access-Control-Allow-Methods:GET, POST
    Access-Control-Allow-Origin:http://www.b.com <--(here! the same as situation 2)
    Content-Length:115
    Content-Type:text/plain
    Date:Wed, 04 Nov 2015 10:21:29 GMT
    Last-Modified:Tue, 28 Jul 2015 01:41:20 GMT
    Server:Apache
    

    c.com

    Request URL:www.a.com/a.file
    Request Method:GET
    Status Code:200 OK (from cache) <-here
    
    Response Headers
    Accept-Ranges:bytes
    Access-Control-Allow-Methods:GET, POST
    Access-Control-Allow-Origin:http://www.b.com <--(here! it is "http://www.a.com" in situation 2)
    Content-Length:115
    Content-Type:text/plain
    Date:Wed, 04 Nov 2015 10:21:29 GMT
    Last-Modified:Tue, 28 Jul 2015 01:41:40 GMT
    Server:Apache
    

1 个答案:

答案 0 :(得分:6)

问题解决了。

只需要在Apache中的httpd.conf中添加 Header附加Vary Origin

here是详细信息。