浏览器的跨域问题该怎么解决?

浏览器判断是跨域请求会在请求头上添加origin,表示这个请求来源哪里。比如:

Plaintext GET / HTTP/1.1 Origin: http://localhost:8601

服务器收到请求判断这个Origin是否允许跨域,如果允许则在响应头中说明允许该来源的跨域请求,如下:

Plaintext Access-Control-Allow-Origin:http://localhost:8601

如果允许任何域名来源的跨域请求,则响应如下:

Plaintext Access-Control-Allow-Origin:*

解决跨域的方法:

1、JSONP

通过script标签的src属性进行跨域请求,如果服务端要响应内容则首先读取请求参数callback的值,callback是一个回调函数的名称,服务端读取callback的值后将响应内容通过调用callback函数的方式告诉请求方。如下图:

浏览器的跨域问题该怎么解决?

2、添加响应头

服务端在响应头添加

Access-Control-Allow-Origin:

3、通过nginx代理跨域

由于服务端之间没有跨域,浏览器通过nginx去访问跨域地址。

浏览器的跨域问题该怎么解决?

1)浏览器先访问

http://192.168.101.10:8601 nginx提供的地址,进入页面

2)此页面要跨域访问

http://192.168.101.11:8601 ,不能直接跨域访问http://www.baidu.com:8601 ,而是访问nginx的一个同源地址,比如:

http://192.168.101.11:8601/api ,通过

http://192.168.101.11:8601/api 的代理去访问http://www.baidu.com:8601。

这样就实现了跨域访问。

浏览器到

http://192.168.101.11:8601/api 没有跨域

nginx到http://www.baidu.com:8601通过服务端通信,没有跨域。

我们准备使用方案2解决跨域问题。在内容管理的api工程config包下编写GlobalCorsConfig.java,

或直接从课程资料/项目工程下拷贝,

代码如下:

Java package com.xuecheng.system.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; / * @description 跨域过虑器 * @author Mr.M * @date 2022/9/7 11:04 * @version 1.0 */ @Configuration public class GlobalCorsConfig { / * 允许跨域调用的过滤器 */ @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); //允许白名单域名进行跨域调用 config.addAllowedOrigin(“*”); //允许跨越发送cookie config.setAllowCredentials(true); //放行全部原始头信息 config.addAllowedHeader(“*”); //允许所有请求方法跨域调用 config.addAllowedMethod(“*”); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration(“/”, config); return new CorsFilter(source); } }

此配置类实现了跨域过虑器,在响应头添加

Access-Control-Allow-Origin。

重启系统管理服务,前端工程可以正常进入http://localhost:8601,观察浏览器记录,成功解决跨域。

浏览器的跨域问题该怎么解决?

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:浏览器的跨域问题该怎么解决? https://www.dachanpin.com/a/cyfx/10770.html

(0)
上一篇 2023-05-12 02:15:05
下一篇 2023-05-12 02:16:18

相关推荐

  • 邢国辉强调:千方百计引进科技创新创业人才 为石家庄发展提供人

    8月30日,市长邢国辉主持召开市长办公会议,会议听取了关于引进首批科技创新创业人才的情况汇报。邢国辉强调,要千方百计引进高层次创新创业人才,不断优化人才发展环境,推动大众创业万众创新。 会议指出, 2015年,我市出台的《关于大力引进高层次科技创新创业人才的意见》和《关于大力推进大众创业万众创新若干政策措施的实施意见》中规定,“对拥有先进技术和自主知识产权的…

    创业分享 2023-05-29
    74
  • 大数据创业:有了一个中央厨房

      在新经济时代,大数据无疑是一个具有诱惑力的风口。但是,作为个人及小型公司来讲,巨大的前期投入则是一道绕不过的坎。不过,记者日前从中国大数据资产运营商九次方大数据了解到,该公司上线了国内首个大数据领域创业孵化器——九次方“数据星河”。   九次方大数据高级副总裁李国静在接受中国经济时报记者采访时说,“数据星河”平台以提供数据源、数据工具等形式为创业者提供一…

    创业分享 2023-05-24
    129
  • 私募股权、创业投资基金管理人信用信息报告功能上线

      来源:中国基金业协会   一、私募股权、创业投资基金管理人会员可通过AMBERS系统的一级页签“会员信用信息报告”模块查阅或打印本会员机构信用信息报告(建议使用chrome浏览器),该信用信息报告由表格及雷达图等形式展示,每季度将定期滚动更新。为防止信用信息被篡改,相关合作方可以通过手机等移动设备扫描信用信息报告页面的防伪二维码(每7天更新一次),核实该…

    创业分享 2023-05-12
    81
  • 知名天使投资人陈维伟:投资人要有创业经历

      闯世界到深圳当小老板 请文明发言,还可以输入140字 编辑: 文海燕 发表 相关新闻   南方日报记者 陈熊海 知名天使投资人陈维伟:投资人要有创业经历 小提示:您要为您发表的言论后果负责,请各位遵守法纪注意语言文明 深圳新闻   我投资的社会创新项目“声活”得到了李克强总理的关爱,我感到非常激动、非常开心,听障者创业,无声胜有声。   2009年,我在…

    2023-05-25
    89
  • 极米科技的联合创始人讲述创业心得

    美女创业者分享成功经验 此次宣讲会的主讲人杨蓉也是一个经验丰富的创业者,曾任世纪佳缘交友网线下事业部总经理。 杨蓉告诉华西都市报记者,她将会在宣讲会上首先和大家分享当初的创业初衷、创业过程中的创业心得。对于极米科技的创始人来说,创业是一个人生选择。创始人团队中很多人以前都是在跨国企业有着稳定工作的人,但是他们却毅然选择了创业这一条最艰难的路。他们的创业故事和…

    创业分享 2023-05-13
    99

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

工作时间:周一至周五,9:30-16:30,节假日休息