跨域的几种解决方法

1、jsonp
利用

<script src="" > 

来解决跨域
假设当前域为localhost:8080,现想访问localhost:9090来获取数据则可以

$('head').append("<script src='http://localhost:9090/user/getUserData?userId="123"' callback=showUserData>")

//后台代码
response.setAttribute("callback","xxxxxxxxxx")

2 postMessage
通过

otherWindow.postMessage(message, targetOrigin, [transfer])

otherWindow
其他窗口的一个引用
message
将要发送到其他 window的数据
targetOrigin
通过窗口的origin属性来指定哪些窗口能接收到消息事件,其值可以是字符串"*"(表示无限制)或者一个URI。在发送消息的时候,如果目标窗口的协议、主机地址或端口这三者的任意一项不匹配targetOrigin提供的值,那么消息就不会被发送
transfer 可选
是一串和message 同时传递的Transferable对象

例如

//http://locahost:8080/test1.html
<iframe id="ifraTs2" src="http://localhost:9090/test2.html" >

<scirpt>
   var message = "Hello";
   var targetOrigin = "http://localhost:9090";
    $('#ifraTs2'). contentWindow.postMessage(message,targetOrigin);
</script>

//test2.html    接收消息页面添加message监听
<script>
 window.addEventListener("message",function(event) {
   //判断信息来源地址
    if(event. origin == "http://localhost:8080"){
    }
})
</script>

3、后台拦截器进行请求头修改

 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                    throws Exception {
                    response.addHeader("Access-Control-Allow-Origin", "*");
       response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
                    response.addHeader("Access-Control-Allow-Headers",
                            "Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,token");
                return true;
            }

4配置nginx
通过nginx来进行不同服务器的跳转
个人推荐nginx进行跨域问题解决

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权情况下,不能读写对方的资源。为...
    Ligod阅读 3,759评论 0 0
  • 跨域问题的场景和解决方案多种多样,只要是做前端开发,总会遇到。而且面试时也是必问的问题。所以自己学习总结记录一下。...
    花开_陈凤娟阅读 4,028评论 0 0
  • 原文出自:https://www.pandashen.com 同源策略 同源策略/SOP(Same origin ...
    PandaShen阅读 4,610评论 0 3
  • 什么是跨域 说到跨域必须先解释什么是同源策略,它是由Netscape提出的一个著名的安全策略。浏览器出于安全方面的...
    8d2855a6c5d0阅读 5,145评论 0 0
  • 为新房准备的画,待装框
    禾小he阅读 1,634评论 0 3

友情链接更多精彩内容