erlang的 cowboy服务解决跨域问题


    对于非简单请求(具体可以这篇文章,跨域资源共享),在正式访问请求前,浏览器会发送一个预检请求,就是option请求。针对option请求,必须保证如下2点,后面的正式请求才会访问:第一,要能返回Access-Control-Allow-Origin 等字段,告诉浏览器你这个请求域名我服务端是可以支持的。第二,对于跨域的预检请求,要能返回成功。

由于浏览器的同源策略,前后端分离的时候会出现跨域的问题

1、什么就算跨域了,以下三点中只要有一个不同就是跨域啦。

1)、协议不同;2)、域名不同(IP地址不同)、3)、端口号不同

下图来自百度百科

因为浏览器的同源策略限制,不是同源的脚本不能操作其他源下面的资源,想操作另一个源下面的资源就属于跨域了,这里说的跨域是广义跨域,我们常说的代码中请求跨域,是狭义的跨域,即在脚本代码中向非同源域发送http请求

浏览器的同源策略(SOP/same origin policy)是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS(跨站脚本攻击 cross site scripting)和CSRF(跨站请求伪造cross-site request forgery)等攻击。

(同源 origin:协议,域名,端口号,不清楚的话,直接在浏览器控制台中输入window.location.origin看看返回值就知道了。)

下面两种情况,是不受跨域限制的,严格来讲,这两种情况只是跨站资源请求:

  1)页面中的链接,重定向及表单提交是不受同源策略限制的

  2)跨域资源的引入,如