cors

跨域问题

那年仲夏 提交于 2020-03-08 20:12:40
转载: https://segmentfault.com/a/1190000000718840 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70.32.92.74/b.js 域名和域名对应ip 不允许 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允许 http://www.a.com/a.js http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问) http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 不允许

详解js跨域

≡放荡痞女 提交于 2020-03-08 20:09:25
(P.s. 本文系转载, 点我 阅读原文。) 什么是跨域? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 对于端口和协议的不同,只能通过后台来解决。URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70.32.92.74/b.js 域名和域名对应ip 不允许 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允许 http://www.a.com/a.js http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问) http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 不允许

详解js跨域问题

◇◆丶佛笑我妖孽 提交于 2020-03-08 20:06:20
注:本文转载自---- https://segmentfault.com/a/1190000000718840 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing )跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。 CORS 背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。 <script type="text/javascript"> var xhr = new XMLHttpRequest(); xhr.open("GET", "/trigkit4",true); xhr.send(); </script> 以上的 trigkit4 是相对路径,如果我们要使用 CORS ,相关 Ajax 代码可能如下所示: <script type="text/javascript"> var xhr = new XMLHttpRequest(); xhr.open("GET", "http://segmentfault.com/u/trigkit4/",true); xhr.send(); </script> 代码与之前的区别就在于相对路径换成了其他域的绝对路径,也就是你要跨域访问的接口地址。

详解js跨域问题

三世轮回 提交于 2020-03-08 20:05:18
什么是跨域? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70.32.92.74/b.js 域名和域名对应ip 不允许 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允许 http://www.a.com/a.js http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问) http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 不允许 对于端口和协议的不同,只能通过后台来解决。 跨域资源共享(CORS) CORS

详解js跨域

两盒软妹~` 提交于 2020-03-08 20:04:19
什么是跨域? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 对于端口和协议的不同,只能通过后台来解决。URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70.32.92.74/b.js 域名和域名对应ip 不允许 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允许 http://www.a.com/a.js http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问) http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 不允许 跨域资源共享(CORS) CORS(Cross

允许跨域资源共享(CORS)携带 Cookie

心不动则不痛 提交于 2020-03-08 17:23:32
CORS 是一个 W3C 标准,全称是“跨域资源共享”(Cross-origin resource sharing)。 默认浏览器为了安全,遵循“同源策略”,不允许 Ajax 跨域访问资源,而为了允许这种操作,服务器端和客户端都要遵循一些约定。 服务器端需设置以下响应头: Access-Control-Allow-Origin: <origin> | * // 授权的访问源 Access-Control-Max-Age: <delta-seconds> // 预检授权的有效期,单位:秒 Access-Control-Allow-Credentials: true | false // 是否允许携带 Cookie Access-Control-Allow-Methods: <method>[, <method>]* // 允许的请求动词 Access-Control-Allow-Headers: <field-name>[, <field-name>]* // 额外允许携带的请求头 Access-Control-Expose-Headers: <field-name>[, <field-name>]* // 额外允许访问的响应头 我们看到, Access-Control-Allow-Credentials 响应头会使浏览器允许在 Ajax 访问时携带 Cookie,但我们仍然需要对

cors跨域中关于access-control-allow-headers导致的错误

倖福魔咒の 提交于 2020-03-07 19:42:27
cors.png 1、详细错误信息是: Access to XMLHttpRequest at '[http://appservice.wogame-dev.com/h5/game/getCdkDetail](http://appservice.wogame-dev.com/h5/game/getCdkDetail)' from origin '[http://app.wogame-dev.com](http://app.wogame-dev.com)' has been blocked by CORS policy: Request header field wg-token is not allowed by Access-Control-Allow-Headers in preflight response. 抓包查看http请求和响应,发现已允许跨域。说明跨域设置是成功了,只是HTTP Header缺少了一个字段,导致的报错。 11_30_08__12_07_2018.jpg 2、这里贴出java源码: import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context

异步请求fetch之初体验

有些话、适合烂在心里 提交于 2020-03-07 14:26:01
更好阅读体验可移步我的博客: Blog 导读 传递信息到服务器,从服务器获取信息,是前端发展的重中之重,尤其是现在前后端分离的大前提下,前后端的数据交互是前端的必修科目了。从很久之前到现在,ajax都是每个前端入行者必须技能。当然为了便于开发者, 各种三方工具将ajax包装,然后给开发者使用,jquery、axios等等。这都不是今天的重点, 今天要说一个JavaScript原生的获取资源接口 Fetch API, 虽然各大浏览器支持率不高,但是这样的一个概念确实值得了解学习,并且现在我们可以通过polyfill来实现不同浏览器的兼容性问题 Fetch 先来看看各个浏览器对fetch的原生支持情况,可以看到支持性并不是很高,safari在10.1 之后才支持,ios更是10.3之后才支持,IE完全不支持。当然新技术的发展总会经历这个过程。不过,想提前尝尝鲜也是可以的我们可以使用 polyfill 声明:以下的所有代码测试都是基于 Chrome 实现 废话不多说, fetch 返回的是一个Promise,我们先来看一个基本的 fetch 结构 fetch(url, option).then( res => { //do something }).catch(err => { //do something }) fetch 的url 参数是必须的,option参数可选

CORS 协议(跨域资源共享)

南楼画角 提交于 2020-03-07 10:16:05
跨域问题 只要协议、域名、端口有任何一个不同,都被当作是不同的域。 为什么会有跨域的限制? 之前发生过的一些跨域安全事件: 新浪微博XSS受攻击事件 2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉团团高清普通话版种子”,“这是传说中的神仙眷侣啊”,“惊爆!范冰冰艳照真流出了”等等微博和私信,并自动关注一位名为hellosamy的用户。 事件的经过线索如下: 20:14,开始有大量带V的认证用户中招转发蠕虫 20:30,某网站中的病毒页面无法访问 20:32,新浪微博中hellosamy用户无法访问 21:02,新浪漏洞修补完毕 http://coolshell.cn/articles/4914.html 百度贴吧xss攻击事件 2014年3月9晚,六安吧等几十个贴吧出现点击推广贴会自动转发等。 并且受到xss攻击的转帖吧友所关注的每个关注的贴吧都会转一遍,病毒循环发帖。并且导致吧务人员,和吧友被封禁。 CORS 协议 CORS 协议是W3C的标准协议( https://www.w3.org/TR/cors/ ), CORS(Cross-Origin Resource Sharing)跨域资源共享,这个协议 定义了必须在访问跨域资源时

前端 fetch 通信

守給你的承諾、 提交于 2020-03-06 00:04:55
随着前端异步的发展, XHR 这种耦合方式的书写不利于前端异步的 Promise 回调. 而且,写起来也是很复杂. fetch API 本来是在 SW(ServiceWorkers) 中提出的, 不过, 后面觉得好用, 就把他挂载到 window 对象下. 这样, 在前端的正常通信中, 我们也可以直接调用. 但, fetch 毕竟比较新, 看一下他的兼容性. 在 PC 端上, 就 FF, Opera 和 Chrome 比较 fashion. mobile 的话, 基本上是不能用的. 当然, 前端一直是个拥抱变化的职业, 官方已经有一个现成的 polyfill 可以使用. 这样的话, 就没必要过多担心. 每用到一个新的 feature, 我们首先得知道他能不能用. Modernizr 这个库做的挺好的. 这里, 我们简单的了解一下就 ok 了. let isFetch = window.fetch?true:false; fetch 基本格式 可以说, fetch 就是 ajax + Promise. 使用的方式和 jquery 提供的 $.ajax() 差不多. fetch('./api/some.json') .then( function(response) { if (response.status !== 200) { console.log(`返回的响应码$