跨域发生在哪?发生在浏览器收到返回结果,是浏览器主动拦截的,请求和相应已经发生,但最后被拦截了。

    某些get请求可能已经生效,这是一个需要注意的细节。

    要解决跨域:

    • jsonp。后台接收callback名,返回 callback({}),前端定义function callback(data){}
    • 代理服务器,把请求的结果转发到不跨域的代理服务器,可以在开发时候使用
    • cors。后端设置允许的请求头。

    什么是简单请求?
    get post head 动作,无自定义请求头,Content-Type是下面之一:

    • application/x-www-form-urlencoded
    • multipart/form-data
    • text/plain

    可以添加 Access-Control-Allow-Origin: http:a.com

    预检请求怎么办?
    判断如果是 options,就添加

    1. Access-Control-Aloow-Origin: a.com
    2. Access-Control-Allow-Headers: x-toekn content-type
    3. access-control-alow-methods: put

    如果需要cookie

    1. access-control-allow-credentials:true