(小白成长之路)node.js跨域问题

187 阅读1分钟

相信其他和我一样的小伙伴在学习node.js的时候都会碰到跨域的问题,之前真的是各种苦恼,以为是代码出了问题,查了很多资料知道啦原来是跨域的问题,现在总结两种方案分享给大家.

第一种解决跨域的法案jsonp

* 在ajax的datatype请求里增加jsonp

*后端:response.jsonp({数据}) 

优点:

* 兼容性好到令人发指

缺点:

* 不支持post请求
* 2.数据大的话,搞不定,文件上传搞不定

实现原理:

* 在head里面里面增加一个script标签,利用src属性不受跨域限制的特性
*向不同源的服务器发送一个get
* url中携带了一个callback参数
* 服务器接收到之后返回了一个函数的调用xxx{{name:'jack'}}
* 返回浏览器后解析成js调用

第二种解决方案:CORS(目前最为流行的方案)

  • 前端:什么都不用做

  • 后端:设置允许跨域

      **express中:**
      1. 响应数据之前:设置一个允许的header
      2. response.header('Access-Control-Allow-Origin', '*');
      2. 无论用什么开发的后端:都需要设置上面类似的内容,才可以允许前端访问
    

优点:

  • 目前用的最多的
  • 用起来简单到令人发指
  • get和post都支持

缺点:

  • HTML5中推出的新标准,低版本浏览器不支持ie
  • 兼容性比jsonp差一些

实现原理:

  • 浏览器能够识别('Access-Control-Allow-Origin', '*');这个header
  • 请求发给服务器之后,服务器返回的响应头中有一个允许的标记
  • 浏览器就认为服务器允许跨域访问,没有了跨域的错误

ps:代码之路任重道远,让我们一起努力进步吧