跨域方法

原文地址:https://juejin.im/entry/5b3a2775f265da630e27a7ce?utm_source=gold_browser_extension

  • core(跨域资源共享Cross-origin resource sharing),允许浏览器向跨域服务器发出XMLHTTPRequest 请求,从而克服跨域问题。需要浏览器和服务器同时支持。简单的来说就是需要设置Access-Control-Allow-Methods(请求方法)、Access-Control-Allow-Headers , Access-Control-Allow-Origin等字段。

简单的请求get ,可以不用设置Access-Control-Allow-Methods,对于post、put、非简单请求。在后端代码设置

 'Content-Type': 'text/plain',
 'Access-Control-Allow-Origin': '*',//允许所有的origin跨域访问,可以单独指定某个网站
  'Access-Control-Allow-Methods': 'GET, POST, PUT'//允许访问的方法
  • jsonp,一个逆向思维的方法。一般是直接调用写好的方法,jsonp是写好方法,让请求调用。也是利用script标签的无跨域限制。

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = `http://127.0.0.1:8888/?callback=onBack`; //给后端发一个参数,是函数名



function onBack (res) {
  console.log(JSON.stringify(res));
  // 请求完后删除添加到页面上的script标签
  var head = document.head
  head.removeChild(script)
}

后端会把返回的内容放在onBack(res),当script标签内容请求成功后,就相当于调用了onBack(res),参数是返回的内容。这样的方法只能用get请求。

如今请求的js库axions,可以实现代理了,也就是不需要后端的配合,也可以跨域

Last updated