品牌微信网站建设,做网站的域名,梧州龙圩,天津怎样做网站推广1.什么是跨域#xff1f;
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 举个例子或许比较生动
当前所在页面请求的页面是否同域原因https://www.csdn.net/https://blog.csdn.net/weixin_56703682√同源#xff08;同域名同协议同端口#x…1.什么是跨域
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 举个例子或许比较生动
当前所在页面请求的页面是否同域原因https://www.csdn.net/https://blog.csdn.net/weixin_56703682√同源同域名同协议同端口https://www.csdn.net/http://www.csdn.net/×协议不同http/httpshttps://www.csdn.net/https://github.com/×主域名不同https://www.csdn.net/https://www.blog.csdn.net/×协议不同http://www.test.com:8848http://www.test.com:8080/×端口不同
2.为什么会出现跨域
跨域问题通常是由于浏览器的同源策略引起的。同源策略要求网页上的脚本只能读取来自同一源协议、域名、端口的响应而不能读取其他源的信息。如果一个网页包含的脚本试图去读取来自不同源的数据就会触发跨域问题。
这样的设计是为了保护用户的隐私和安全防止恶意网站窃取用户的信息。然而它也带来了一些限制特别是对于现代Web应用来说跨域访问是很常见的需求比如从一个域名下请求API接口数据等。
3.怎么解决跨域
为了解决跨域问题可以采取多种方法比如使用JSONP、CORS跨域资源共享、代理、iframe消息传递等等。
通过使用请求头来解决
通过设置 CORS跨域资源共享相关的请求头来实现跨域请求。 java中如何使用springboot来解决呢 https://spring.io/guides/gs/rest-service-cors
配置的pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.0/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.example/groupIdartifactIdrest-service-cors-complete/artifactIdversion0.0.1-SNAPSHOT/versionnamerest-service-cors-complete/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version17/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.apache.httpcomponents.client5/groupIdartifactIdhttpclient5/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project在 Java 中实现跨域请求通常涉及到一些网络编程和设置响应头的工作。以下是一些基本的方法来实现跨域请求
使用 HttpServletResponse 设置响应头在处理请求的 Java 代码中可以通过 HttpServletResponse 对象设置一些响应头信息以允许跨域请求。例如设置允许的域名、请求方法、头部信息等。
response.setHeader(Access-Control-Allow-Origin, http://example.com); // 设置允许跨域的域名
response.setHeader(Access-Control-Allow-Methods, GET, POST, PUT, DELETE, OPTIONS); // 设置允许的请求方法
response.setHeader(Access-Control-Allow-Headers, Content-Type, Authorization); // 设置允许的请求头部信息
response.setHeader(Access-Control-Max-Age, 3600); // 设置预检请求的缓存时间
response.setHeader(Access-Control-Allow-Credentials, true); // 设置是否允许发送 Cookie使用 Filter 进行统一处理可以编写一个 Filter 来统一处理跨域请求通过设置响应头来实现跨域访问的授权。
public class CorsFilter implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletResponse httpResponse (HttpServletResponse) response;// 设置允许跨域的域名httpResponse.addHeader(Access-Control-Allow-Origin, http://example.com);// 设置允许的请求方法httpResponse.addHeader(Access-Control-Allow-Methods, GET, POST, PUT, DELETE, OPTIONS);// 设置允许的请求头部信息httpResponse.addHeader(Access-Control-Allow-Headers, Content-Type, Authorization);// 设置预检请求的缓存时间httpResponse.addHeader(Access-Control-Max-Age, 3600);// 设置是否允许发送 CookiehttpResponse.addHeader(Access-Control-Allow-Credentials, true);chain.doFilter(request, response);}
}