PHP设置允许跨域:
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods:*');
header('Access-Control-Allow-Headers:*');
header("Access-Control-Request-Headers: *");
或者Nginx配置:
location /{
#告诉浏览器允许跨域访问的方法
add_header Access-Control-Allow-Methods *;
# 告诉浏览器缓存OPTIONS预检请求1小时
add_header Access-Control-Max-Age 3600;
#允许带有cookie访问
add_header Access-Control-Allow-Credentials true;
#注意 * 不能满足带有cookie的访问,Origin 必须是全匹配,这里通过变量获取
add_header Access-Control-Allow-Origin $http_origin;
#设置支持所有的自定义请求头
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
#如果预检请求,则返回成功,不需要转发到后端
if ($request_method = OPTIONS){
return 200;
}
}
跨域测试方法
自己测试跨域的时候一致都是写一个单独的项目,用不同的端口运行起来调自己项目中的接口。这样很麻烦,一直以为postman会有测跨域的功能,但没找到。偶然间发现浏览器自己就可以测跨域,方法也很简单,随便打开一个网站后打开【开发者工具】,里面的【Console】可以直接输入js代码测试:
var token= "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleV86IjoiMGY4YTlmYzgtODZmMi00NjM3LWFlNGUtYTdmYTQyMzIzMmYwIn0.9NR3VRvgOg2USyCMyUaBEpZKETj3tn9eIdnQo7vXQH_0hwqWOKAkSxCYNtYOnPoRLEOaJQTVdq22grvvqYU4Fw";
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://127.0.0.1:6060/system/dept/list');
xhr.setRequestHeader("x-access-token",token);
xhr.send(null);
xhr.onload = function(e) {
var xhr = e.target;
console.log(xhr.responseText);
}
没有token验证的可以去掉token设置
输入完后直接按回车键就可以返回结果:
标签:Control,跨域,header,Allow,xhr,Access,如何,测试
From: https://www.cnblogs.com/baiwangea/p/17610771.html