美文网首页
解决Ajax 跨域的三种方法

解决Ajax 跨域的三种方法

作者: 三寸日光_ | 来源:发表于2018-01-30 15:15 被阅读0次

浏览器具有同源策略,下面一张图说明

说明图

同源政策规定,AJAX请求只能发给同源的网址,不然会报错。下面介绍三种方法 来解决跨域问题

1.JSONP

JSONP的最大特点就是简单实用,老式浏览器全部支持。

他的基本思想是,网页通过添加一个<script>标签,向服务器请求JSON数据,这种做法不受同源政策限制,服务器收到请求后,将数据放在一个指定名字的回调函数里传回来

上面代码 通过动态添加<script>元素,向服务器发出请求。其中地址中的callback参数,用来指定回调函数的名字,这对于jsonp是必须的,服务器收到这个请求后,会将数据放在回调函数的参数位置返回

此时 就能完成跨域请求。

2.WebSocket

WebSocket是一种通信协议,使用ws://(非加密)和wss://(加密)作为协议前缀,改协议不实行同源策略,只要服务器支持,就可以用过它进行跨源通信。

websocket需要进行服务器的配置,下面操作摘自阮老师文章

3.跨域资源共享(CORS)

(1)CORS需要浏览器和服务器的支持,目前除ie9 及以下都支持。

整个跨域资源共享通信过程,都是浏览器自动完成,前端操作和正常的AJAX写法没有叙别,主要实现的关键是服务器,只要服务器实现了CORS接口,就可以实现跨源通信

(2)跨域资源请求(CORS)分为简单请求和非简单请求

下面是对 CORS的 详细流程

http://www.ruanyifeng.com/blog/2016/04/cors.html(阮老师)

JSOP 和 CORS 对比:

a、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。

b、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。

c、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS。

相关文章

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • 实用程序库

    解决ajax跨域方法: jsonp 服务器代理 跨域资源共享 一、moment momentjs官网[https:...

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

  • 【综-网】Http浅析【3】——fetch带cookie的跨域问

    在Http浅析【2】——ajax跨域问题中对跨域产生的原因和解决方法做了说明。这一章节,把带cookie的跨域问题...

  • window.postMessage解决前端ajax跨域问题

    postMessage畅快解决跨域问题 本文主要是记录使用window.postMessage解决ajax跨域问题...

  • AJAX入门

    处理跨域的主要方法 JSONP CORS本文主要讨论CORS解决AJAX因为浏览器同源策略不能跨域请求数据的问题。...

  • 单体框架应用:3.跨域问题的解决

    在前端页面发起ajax请求时会出现跨域问题。跨域问题我目前了解到的解决办法有三种:1.Nignx反向代理。2.拦截...

  • 14-vue-cli脚手架配置代理

    1. 问题:如果解决前端的 ajax 请求跨域的问题 首先可以发送 ajax 请求的方法有哪些? xhr js自带...

  • AJAX

    题目 手写一个ajax 跨域的常用实现方式 知识点 XMLHttpRequest 状态码 跨域:同源策略,跨域解决...

  • 跨域CORS

    CORS全称是跨域资源共享(Cross-Origin Resource Sharing),用来解决AJAX跨域请求...

网友评论

      本文标题:解决Ajax 跨域的三种方法

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