在点滴中成长

【原】如何配置Ajax的跨域请求

说道跨域的问题,由来已久,不是一个特别复杂的事情,但是从未认真的整理过相关文档,今年做个笔记吧!

配置服务器(Nginx)

在遇到跨域的情况的时候,客户端会先向服务器发送一个options的请求用以确认服务器是否允许跨域请求!

location / {
        if ($request_method = 'OPTIONS') {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
            add_header Access-Control-Allow-Headers Content-Type,Content-Range,Content-Disposition,Content-Description;
            return 204;
        }
    }

修改代码(PHP)

再服务器允许跨域请求后,每次返回都得带上下面的头!

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');