AngularJS使用$http出现options请求
客户端需要设置 withCredentials
1 2 3 4 5 6 7 8 9 10
| $http({ url: SERVERURL + '/', method: 'GET', headers: { 'x-access-token': localStorage.getItem('token') }, withCredentials: true })
|
服务器配置(express为例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| router .options('/', function(req, res) { res.setHeader('Access-Control-Allow-Credentials', true); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); res.setHeader("Access-Control-Allow-Headers", 'x-access-token, Content-Type'); res.send(200); }) .use(function(req, res, next) { res.setHeader('Access-Control-Allow-Credentials', true); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); res.setHeader("Access-Control-Allow-Headers", 'x-access-token'); next(); }) .get('/', function(req, res) { });
|
options请求
get请求
跨域配置
客户端不变
服务器端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| .options('/', function(req, res) { res.setHeader('Access-Control-Allow-Origin', req.headers.origin); res.setHeader('Access-Control-Allow-Credentials', true); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); res.setHeader("Access-Control-Allow-Headers", 'x-access-token, Content-Type'); res.send(200); }) .use(function(req, res, next) { res.setHeader('Access-Control-Allow-Origin', req.headers.origin); res.setHeader('Access-Control-Allow-Credentials', true); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); res.setHeader("Access-Control-Allow-Headers", 'x-access-token'); next(); }) .get('/', function(req, res) { });
|
请求的时候不能使用localhost,请上传服务器在尝试跨域
参考文档
文章若有纰漏请大家补充指正,谢谢~~
http://blog.xinshangshangxin.com SHANG殇