当前位置: 首页 > wzjs >正文

网站建设是否属于技术合同网站建设优化400报价

网站建设是否属于技术合同,网站建设优化400报价,设计公司网站运营,做网站什么职业前言 跨域相关 这是一个 经常会碰到的问题 然后 常见的解决方式 也大概就是几种, 各有各的问题 这里仅仅是 从理论上 来探讨这个问题 主流的解决方式 是通过代理, 将不同域 合并到同一个域 测试用例 测试用例如下, 这里仅仅是一个简单的数据展示 获取对方 “/config.jso…

前言

跨域相关

这是一个 经常会碰到的问题

然后 常见的解决方式 也大概就是几种, 各有各的问题

这里仅仅是 从理论上 来探讨这个问题

主流的解决方式 是通过代理, 将不同域 合并到同一个域

测试用例

测试用例如下, 这里仅仅是一个简单的数据展示

获取对方 “/config.json” 的接口的数据, 然后展示出来

无跨域的情况下直接请求 “/config.json”, 这种情况下 正常展示业务数据

跨域的情况 配置为 其他服务器的 “/config.json” 的请求[这里为 http://172.27.181.126:10080/config.json], 这时候会碰到 跨域的问题

<template><div id="text" ><button @click="handleClick" > click </button>{{text}}</div>
</template><script>
import $ from 'jquery'export default {name: "HelloWord",components: {},data() {return {text: "text"}},methods: {mounted() {},handleClick() {var _this = thisconsole.log("xx")$.get("/config.json", function(data) {console.log(data)_this.text = data})}}
}
</script><style>
</style>

在无跨域的问题下面, 初始化状态如下

点击按钮之后, 能够正常拿到数据, 并且 正常展示

构造跨域的情况, 更新 url 为 “http://172.27.181.126:10080/config.json” 

发送请求之后 报错如下, 这是一个 典型的跨域异常

访问的这两个不同服务, 不同之处在于 一个里面 from 的值是 node, 一个 from 的值是 nginx

本域的服务如下

第三方域的服务如下

浏览器默认的安全策略配置

Chrome 的启动命令增加如下参数 “--disable-web-security --user-data-dir=D:\ChromeDevData” 

关闭 浏览器的web安全策略

然后 实际运行, 效果如下

可以看到 跨域的异常被跳过了

对方服务器增加允许跨域的相关响应头配置

这个相当于是 客户端这边和对方服务器沟通之后, 对方服务器告诉客户端这边, 需要允许跨域, 客户端这边才能正常的访问对方服务器的服务

服务器这边增加 允许跨域 的相关配置, 配置信息如下

add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Methods "POST,GET,OPTIONS,DELETE";
add_header Access-Control-Allow-Credentials "true";

然后 服务器相应数据如下

然后 我们看一下 页面的情况, 可以看到 跨域问题 也没有了

基于 jsonp 来解决跨域问题

当然 这个同样需要服务器配合, 或者 增加代理服务器 专门转义这块的 wrap

客户端这边处理如下, 直接基于 jquery 中提供的 $.ajax 中相关配置来实现这个处理

主要是 封装 script 标签, 封装 jsoncallback 函数, script 标签主要是用于获取 对方服务器的信息, 拿到的是 jsoncallbck($response)

主要依据的是 script 标签, 没有 跨域策略的限制

然后 jsoncallback 是 jquery 这边自己根据 success 来进行封装的

需要调整服务器这边的处理, wrap 一下, 封装 jsonpcallback 的函数封装格式

使其满足 javascript 的语法格式, 然后 客户端拿到这段内容之后, 将其执行, 进而实现 业务处理

基于代理服务, 统一访问的域

比如我们这里有 node 服务作为本地服务, nginx 作为对方服务

从部署到生产环境的角度来看

那么 可以在 nginx 上面增加配置, 组合 node 服务 和 目标静态资源服务, 比如这里 “location /” 是对应于静态资源服务, ”location /HelloWorld” 对应于 node 服务

然后 这时候通过 nginx 来访问 node 的页面, 然后 页面 $ajax 这边访问的 url 更新为 “/config.json”, 这样就不会存在 跨域的问题了

从另一个角度, 从开发的角度来看, 在 vue 的开发服务器上面配置 相关代理

vue.config.js 中 devServer 的代理配置如下, “/config.json” 代理到 目标服务器上面去

业务测使用, 直接请求本域的数据服务 即可

最终页面效果如下, 从 from 可以判断出 获取的是 对方服务器的数据

这里存在的一个冲突是, 如果 node 上面本身也有 “/config.json” 的服务, 会优先选择 node 上面的 “/config.json” 

chrome 访问对方服务器的时候可能会出现 net::ERR_UNSAFE_PORT

这个是 chrome 这边的一些 安全策略的控制, 发现访问的端口是 某敏感端口, 直接 block 掉请求

浏览器 网络这边的情况如下

然后 console 这边报错如下, 错误信息为 ERR_UNSAFE_PORT

这种情况下, 在 chrome 的启动快捷方式中增加如下 参数即可 “ --explicitly-allowed-ports=10080” 

http://www.dtcms.com/wzjs/515462.html

相关文章:

  • 三网合一网站建设费用外贸业务推广
  • 北京做网站开发的公司商丘seo教程
  • 西部数码网站管理助手ftp工业设计公司
  • 优化网站关键词定制网站建设推广服务
  • 怎么看一个网站什么语言做的广州市人民政府新闻办公室
  • 建一个网站流程百度怎么打广告在首页
  • 网站开发合同纠纷站长域名查询工具
  • 黔江网站建设站长工具在线免费
  • 网站开发php技术网站分析工具
  • 西安做网站那家公司好网络推广的基本渠道
  • 做土豆的视频在线观看网站一键制作网站
  • 做网站建设的怎么寻找客户刷外链工具
  • 郑州官方发布北京百度seo排名
  • 上海自适应网站建设营业推广是什么
  • 新疆交通建设管理局官方网站站内优化怎么做
  • 毕业论文学校网站建设百度线上推广
  • 汕头网站制作开发百度关键词点击器
  • 郑州建网站it培训机构排行榜
  • 网站弹窗无法显示十大免费最亏的免费app
  • 网址怎么做快捷方式百度网站优化排名
  • 网页设计资料seo公司费用
  • 有货 那样的网站怎么做汕头网页搜索排名提升
  • 广州番禺人才网城关网站seo
  • 苏州企业网站制作网络营销推广价格
  • 网络营销员是干嘛的百度seo免费推广教程
  • 服务关系型网站怎么做seo课程简介
  • 网站ui设计要点推广网站平台
  • 还有哪些网站可以做H5微信引流推广
  • 香港服务器网站推广百度sem竞价
  • 做电影网站违法么百度云官网登录首页