做网站l价格,平台推广策划案,企业管理系统项目简介,江门鹤山最新消息新闻年少时的梦想就是买一台小霸王游戏机 当时的宣传语就是小霸王其乐无穷~。 大些了#xff0c;攒够了零花钱#xff0c;在家长的带领下终于买到了 那一刻我感觉就是最幸福的人 风都是甜的#xff01;
哪成想... 刚到家就被家长扣下了 “”禁止未成年人玩游戏机 (问过卖家了攒够了零花钱在家长的带领下终于买到了 那一刻我感觉就是最幸福的人 风都是甜的
哪成想... 刚到家就被家长扣下了 “”禁止未成年人玩游戏机 (问过卖家了卖家给的结论)... 合着买是能买玩是不能玩的 不让我玩啊我这个气呀... 蹩扯了~ 生活中的事跟跨域有什么关系那必须有。 跨域的产生是浏览器的安全机制引起的只有在使用Ajax时才会发生。简单来说就是你可以通过ajax发送请求但要看远程服务器脸色他没授权浏览器这个老六就给拦截了不能用这个结果像极了游戏机让买不让玩。
什么是跨域
跨域Cross-Origin指的是在 Web 开发中一个网页的运行环境域与所请求资源的域不一致即请求的目标资源与当前网页的域名协议、域名或端口不同。
Web 浏览器遵循同源策略Same-Origin Policy这是一种安全策略旨在防止潜在的恶意网站窃取用户数据或进行其他安全攻击。同源策略要求网页的运行环境和所请求的资源必须拥有相同的协议、域名和端口否则浏览器会阻止跨域请求的执行。
举例来说每个网站都有一个域名或者IP地址实际上域名就是对IP地址的别名方便人们记忆。当我们访问一个网站时浏览器会将某个页面下载到本地并解析以展示图形页面。为了支持更多的业务需求在这个页面中可能会发起一些额外的请求。为了避免页面卡顿我们使用了Ajax技术偷偷地通过后门请求数据。偷偷走后门是可行的但是必须遵循规则不可以随意发起请求。
假设当前页面是www.qfedu.com在这个页面中发送了一个Ajax请求。浏览器允许请求发送出去但是请求的地址不是本身的地址而是www.1000phone.com/api/xxxx这样的地址。此时浏览器会检查响应并查看服务端是否允许任何来源发起请求。如果服务端允许浏览器将放行请求。否则浏览器会报错这种错误就是跨域问题。
来吧看图 绿色都是可以通行的红色是跨域概念的关键点
如何处理跨域
常用的解决跨域方案有3种分别是jsonp、cors、proxy ● JSONPJSON with Padding核心思想是浏览器只限制ajax不限制图片、多媒体、css、js等资源访问其他网站恰好利用这个特性使用一些技巧来解决跨域。
JSONP 是一种利用script标签进行跨域请求的技术。通过在页面中动态创建script标签请求远程服务器资源并在服务器响应中返回一个包裹在函数调用中的 JSON 数据从而绕过同源策略的限制。JSONP 适用于在受控的环境中服务器端需要配合返回 JSONP 格式的数据。
有局限性需要回调函数 别人服务端配合 ● CORS跨域资源共享核心思想就是让服务器不对任何访问者做限制在响应头中添加一些语句浏览器就放行了就像游戏机卖家跟家长说多大都可以玩家长也就不会没收了。 CORS 是一种标准的跨域解决方案由服务器端进行配置。服务器通过设置响应头来指示允许特定域的请求访问资源浏览器在接收到响应头后判断是否允许跨域请求。CORS 支持简单请求和预检请求是一种较为安全和灵活的跨域解决方案。
node.js类型的服务器代码设置如下 // // 允许哪些域名请求我
//设置所有页面都可以访问这个服务
resp.setHeader(Access-Control-Allow-Origin, *)
//只允许设定的几个网站访问
resp.setHeader(Access-Control-Allow-Origin, http://127.0.0.1:7777)
//允许设定多个网站访问
resp.setHeader(Access-Control-Allow-Origin, http://127.0.0.1:7777,http://127.0.0.1:5500)
// // 允许哪些请求方式
// resp.setHeader(Access-Control-Allow-Methods, PUT,POST,GET,DELETE,OPTIONS)
// // 允许携带哪些额外的请求头信息
// resp.setHeader(Access-Control-Allow-Headers, X-Requested-With,X_Requested_With,Content-Type)有局限性需要服务端配合别人服务端安全性降低
● 代理服务器Proxy核心思想是指挥家长玩游戏机。。。
代理服务器是一种通过后端服务器转发请求的方法。前端应用将跨域请求发送给同源服务器然后同源服务器再向目标服务器发送请求并将响应返回给前端。这样前端应用就绕过了跨域问题因为请求是同源的。代理服务器是一种有效的跨域解决方案特别适用于无法修改目标服务器响应头的情况。
这个是比较好的解决方案
总结
我们应该多劝劝浏览器少管点闲事