美文网首页
前端开发之路--常见的跨域问题解决方案二

前端开发之路--常见的跨域问题解决方案二

作者: 唐人不自醉 | 来源:发表于2018-11-19 00:49 被阅读3次

原生JS实现JSONP

JSONP解决方法。
就是利用script标签的src属性去加载数据。每当需要跨域请求数据的时候,生成一个script标签,设置src属性为请求数据的url,然后加入到DOM中触发执行。

//创建script标签

var script = document.createElement('script');

//设置script标签的type属性

script.type = 'text/javascript';

//设置script标签的src属性并指定回调执行函数为BackFunc

script.src = 'http://localhost:8080/login?user=admin&callback=BackFunc';

//这一步很重要,要将script元素插入到DOM中

document.head.appendChild(script);
2345截图20181119003909.png

/ 定义回调执行函数,处理返回得到的数据。
function BackFunc(res) {
console.log("res便是返回的数据");
}
JSONP的原理便是将原本返回的json数据直接转为函数的参数形式返回,服务端返回的内容大概是这样:
//调用回调函数执行
BackFunc({"id":"123456","name":"jsonp"})

2345截图20181119003909.png

jQuery实现JSONP

在JavaScript类库jQuery中,也对jsonp的使用做了封装。jsonp方法都封装到了$.ajax对象里。设置参数type为"jsonp",即可使用jsonp方法跨域,原理是相同的。


2345截图20181119003909.png

虽然jsonp方案在一些场景下可以解决跨域,但存在一些问题:一个是安全问题依然未得到保障,另外就是这种方式只能支持get请求,无法满足其它场景。所以又产生了新的方案,从后端入手处理跨域问题。

2345截图20181119003909.png

后端CORS跨域

在服务端处理前端请求返回数据的时候,设置response的header信息。
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type,token");
response.setHeader("Access-Control-Allow-Methods", "HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
这样浏览器在读取响应的header信息时,就不再拦截跨域的数据了。
当然,这种方式虽然解决了支持多种请求,但是安全问题上未得到有效解决,随后再介绍其他解决跨域的方法。


2345截图20181119003909.png

相关文章

  • 跨域

    博客 说说跨域那些事儿 不要再问我跨域的问题了 前端常见跨域解决方案(全) 同源策略 JSONP(填充式JSON)...

  • 常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和a...

  • vue解决跨域问题

    跨域问题在开发中,是一个常见的问题。解决方案可以在前端处理也可以在后端解决,本教程为在前端处理。 本教程讲解的为v...

  • 关于跨域与服务器代理的问题(vue、jquery-ajax、ax

    作为一名前端开发工程师,我们在开发中经常会遇到跨域这个问题。今天想从跨域的原理说起,接着到解决方案,最后到框架对跨...

  • js常见跨域解决方案

    参考:前端常见跨域解决方案(全) 跨域,什么是“域”? 这里就要先说说同源策略了。所谓同源是指"协议+域名+端口"...

  • JS之跨域问题汇总

    1JS 之跨域问题汇总 跨域问题的场景和解决方案多种多样,只要是做前端开发,总会遇到。而且面试时也是必问的问题。所...

  • IOS webview iframe 引入第三方页面白屏

    跨域引入或者跨域请求是前端小伙伴在开发中经常遇到的问题,,在网上搜索你会发现很多解决方案:无论是前端Vue项目的加...

  • 跨域问题分析

    因为浏览器的同源策略,前端开发会遇到各种跨域问题。本篇文章总结了遇到跨域问题的不同的场景以及对应的解决方案。 协议...

  • 跨域解决方案(史上最易懂)

    跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是...

  • 前端常见跨域解决方案(全)

    前端常见跨域解决方案(全) 什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的...

网友评论

      本文标题:前端开发之路--常见的跨域问题解决方案二

      本文链接:https://www.haomeiwen.com/subject/iognfqtx.html