这几天差点折在这个跨域上了
老是报这个错误
网上的方法都快翻遍了,前端,后端,nginx配置都一个个试了,结果还是不行,就是老报请求头的域不在允许范围
前端:
后端:
nigix.config
查看请求发现option200预检请求都过不了,
没办法,后用笨方法在每个类入口都设置一个println方法看是哪一步卡住了,对,本人技术还不够牛能用debug追踪栈程序的运行,这个方法是目前费时间但比较可行的法子之一
这个过程中我发现CORS类方法都没有进去,根本不是配置的原因。
最后发现,我没加**@Configuration**注解!!!
晕死
加上问题就解决了
这里顺便说一下,
allowOrigin = “http://localhost:8080”; 代表后端所允许通过请求的域,一般在请求头携带该请求所来自的域
allowMethods = “GET,POST,PUT,DELETE,OPTIONS”; 代表允许请求的方法
allowCredentials = “true”; 代表是否运许携带cookie
allowHeaders = “Authorization,content-type,Access-Control-Allow-Origin”;代表允许的请求头的类型
exposeHeaders = “”; 代表让前端获取后端的响应头
最后再调用response.setHeader()方法将参数封装到响应头中
nginx.config配置中
server {
listen 8888; //监听的端口,启动时将占用此端口
server_name localhost; //运行的主机名(域)
location /api { //表示只匹配向接口/api转发发送的请求
proxy_pass http://localhost:8081; //表示nginx代理前端转发的目的域
}
如前端域为 http://localhost:8080
后端为http://localhost:8081
前端发送一个get请求到http://localhost:8888/api/test,也就是nginx代理的域,nginx会代替8080访问8081/api/test,得到返回后,前端再收到从8888返回的json数据
对于前端,它面对的是 http://localhost:8888
对于后端,它收到请求的域依然是 http://localhost:8080