跨域方式总结

186 阅读1分钟

跨域

此处跨域指的是合理跨域,如两个不同的域所属公司相同或者是服务端希望其它站点可以请求到自己的数据。即所要跨域请求的资源上的服务器,以某种方式配合不同域的前端,如果服务端不配合,那么肯定是无论如何也跨不了的。

最现代的方式:

  • CORS:跨域资源共享(Cross Origin Resource Sharing ),专属的HTTP头 有Access-Control-Allow-Origin(最常见的响应头),Access-Control-Al1ow-Methods,Access-Control-Allow-Credientials,Access-Control-Max-Age。

    在请求跨域前,浏览器会发送一个预检请求(Preflight),有时候也不会发,如

    OPTIONS /foo/bar/baz.json HTTP/1.1
    Referer: http://www.xxx.com
    

    若服务器支持CORS标准且允许跨域请求,则会回复

    HTTP/1.1 200·0K
    Access-Control-Allow-Origin:*
    Access-Control-Max-Age:86400 //时效。一天以内都可以访问服务器,不用再发送请求。
    

    而后浏览器发送正式请求:

    GET /foo/bar/baz.json HTTP/1.1
    Host: ...
    User-Agent: ...
    Referer: http://www.xxx.com
    

    服务器则回复:

    HTTP/1.1 200 0K
    Access-Control-Allow-Origin:*
    Content-Type: application/json
    Content-Length:11
    
    [1,2,3,4,5]