家具设计网站推荐,个人主页签名引导进入橱窗,网站开发技术是,天水做网站本文主要是关于跨域的几种方式#xff0c;关于什么是跨域这里就不多说了#xff0c;写这个也是为了记住一些知识点的。 一. jsonp jsonp的跨域方式很容易理解#xff0c;页面的的每一个script标签浏览器都会发送get请求获取对应的文本资源#xff0c;获取到了之后#xff… 本文主要是关于跨域的几种方式关于什么是跨域这里就不多说了写这个也是为了记住一些知识点的。 一. jsonp jsonp的跨域方式很容易理解页面的的每一个script标签浏览器都会发送get请求获取对应的文本资源获取到了之后会将获取回来的脚本直接执行jsonp就是利用这个原理在服务器写一个接口接收请求的参数和结果回调的函数在请求接口前应该要事先定义好要回调的函数通过script标签请求之后得到的script会直接执行大概的流程如下 // 浏览器端已经定义好了函数A
function A(str) {console.log(str);
}//服务器端
function getData(method) {return method (Hello Jsonp);
}浏览器端会动态添加某个script标签
script src....../getData?methodA/script
请求这个script标签返回的就是 A(Hello Jsonp)
会立即执行这个函数A(Hello Jsonp)里面的Hello Jsonp就是实际要取的数据 二.Cors 这种跨域方式需要后端的支持需要在后端返回接口之前设置返回的头部Access-Control-Allow-Origin具体的实现方法要根据你用的后端的方法来设置我用的是asp.net mvc实现的方法有很多其中实现的一个方法如下 1、创建一个attribute
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
{public override void OnActionExecuting(ActionExecutingContext filterContext){filterContext.RequestContext.HttpContext.Response.AddHeader(Access-Control-Allow-Origin, *);base.OnActionExecuting(filterContext);}
}
2、应用到Controller中的Action
[AllowCrossSiteJson]
public ActionResult YourMethod()
{return Json(data);
} 三.配置服务器反向代理 此种跨域方式需要服务器如nginx和IIS的支持nginx的反向代理我不是很了解网上看的别人的配置是这样的有需要的可以了解一下 // proxy服务器
server {listen 80;server_name www.domain1.com;location / {proxy_pass http://www.domain2.com:8080; #反向代理proxy_cookie_domain www.domain2.com www.domain1.com; #修改cookie里域名index index.html index.htm;# 当用webpack-dev-server等中间件代理接口访问nignx时此时无浏览器参与故没有同源限制下面的跨域配置可不启用add_header Access-Control-Allow-Origin http://www.domain1.com; #当前端只跨域不带cookie时可为*add_header Access-Control-Allow-Credentials true;}
}IIS的话可以参考一下这个iis7.5做反向代理配置方法实例图文教程 四.使用websocket websocket和http都是基于tcp的应用层协议websocket协议和tttp协议的主要区别是websocket支持跨域建立的是长连接连接是双向的。我自己用c#和nodejs的socket.io写过一些demo但是没有在实际工作中用过所以对这一块了解不深。