1、nginx跨域设置
要在nginx中设置跨域,可以在nginx配置文件中添加以下代码:
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
这段代码会在响应头中添加跨域相关的信息,其中add_header 'Access-Control-Allow-Origin' '*'
表示允许所有来源进行跨域请求。如果你需要更严格的控制,可以将'*'
改为具体的域名。
2、java跨域设置
要在Java中设置跨域,可以使用Java Servlet规范提供的CORS
(跨来源资源共享)机制。以下是一个简单的示例:
public class MyFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
chain.doFilter(req, res);
}
// ...
}
在上面的代码中,
Access-Control-Allow-Origin
表示允许所有来源进行跨域请求,如果你需要更严格的控制,可以将'*'
改为具体的域名。Access-Control-Allow-Methods
表示允许的请求方法,Access-Control-Max-Age
表示预检请求缓存时间,Access-Control-Allow-Headers
表示允许的请求头。在使用时,将该过滤器添加到web.xml中即可。
3、前端vue和react跨域设置
在Vue和React中,可以使用axios
库来发送跨域请求。以下是一个简单的示例:
import axios from 'axios';
axios.defaults.baseURL = 'http://example.com';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.interceptors.request.use(
config => {
config.headers.Authorization = 'Bearer ' + localStorage.getItem('token');
return config;
},
error => {
return Promise.reject(error);
}
);
axios.interceptors.response.use(
response => {
return response;
},
error => {
if (error.response.status === 401) {
// 处理未授权的情况
}
return Promise.reject(error);
}
);
export default axios;
在上面的代码中,
axios.defaults.baseURL
表示设置请求的基础URL,axios.defaults.headers.post['Content-Type']
表示设置请求头的Content-Type。axios.interceptors.request.use
表示请求拦截器,可以在请求发送前添加一些公共的参数或者请求头。axios.interceptors.response.use
表示响应拦截器,可以在响应返回后对响应进行处理。在使用时,只需要引入这个文件,然后使用axios.get()
或者axios.post()
等方法发送请求即可。如果需要更严格的控制跨域请求,可以在服务端进行相应的设置。
原文地址:https://blog.csdn.net/ethnicitybeta/article/details/130239694
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25086.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。