美文网首页
Ajax 跨域的解决方案

Ajax 跨域的解决方案

作者: 唐人不自醉 | 来源:发表于2019-07-07 22:56 被阅读0次

Ajax与跨域

Ajax 是一种异步请求数据的一种技术,对于改善用户的体验和程序的性能很有帮助。
简单地说,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并在网页上呈现出来。常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等等。Ajax的目的是提高用户体验,较少网络数据的传输量。
如何手写 XMLHttpRequest 不借助任何库:

var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function () {
   // 这里的函数异步执行
   if (xhr.readyState == 4) {
     if (xhr.status == 200) {
       alert(xhr.responseText)
     }
   }
}
xhr.open("GET", "/api", false)
xhr.send(null)

因为浏览器出于安全考虑,有同源策略。也就是说,如果协议、域名或者端口有一个不同就是跨域,Ajax 请求会失败。
那么是出于什么安全考虑才会引入这种机制呢? 其实主要是用来防止 CSRF 攻击的。简单点说,CSRF 攻击是利用用户的登录态发起恶意请求。
然后我们来考虑一个问题,请求跨域了,那么请求到底发出去没有? 请求必然是发出去了,但是浏览器拦截了响应。
常见的几种跨域解决方案有:

  • JSONP:利用同源策略对<script>标签不受限制,不过只支持GET请求;
  • CORS:实现 CORS 通信的关键是后端,服务端设置 Access-Control-Allow-Origin 就可以开启,备受推崇的跨域解决方案,比 JSONP 简单许多;
  • Node中间件代理
  • nginx反向代理:主要是通过同源策略对服务器不加限制。

相关文章

  • ajax跨域请求

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

  • 最全解决跨域问题方案,包括post跨域

    ajax跨域,这应该是最全的解决方案了

  • ajax跨域请求问题的五种解决方案

    ajax跨域请求问题的五种解决方案 方案一: 使用跨域资源共享代理(corsproxy) 方案二: 使用jsonp...

  • 解决ajax跨域问题

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

  • PHP Ajax 跨域问题最佳解决方案

    PHP Ajax 跨域问题最佳解决方案 本文通过设置Access-Control-Allow-Origin来实现跨...

  • php ajax跨域访问

    PHP Ajax 跨域问题最佳解决方案 本文通过设置Access-Control-Allow-Origin来实现跨...

  • 前端跨域

    什么是ajax跨域 ajax跨域的原理 ajax出现请求跨域错误问题,主要原因就是因为浏览器的“同源策略”,可以参...

  • 跨域

    跨域:ajax 不能跨域img css script 标签 可以跨域例如:《img src="images/...

  • 跨域解决方案

    跨域解决方案: 1.为什么会有跨域问题? 这是由于浏览器的同源策略,限制了不同源的资源进行交互(不允许用AJAX(...

  • 交互那些事(二)

    说完ajax我想必须说说jsonp了,谈到jsonp就必须先说说跨域,首先ajax是不能跨域的,除非后台允许跨域或...

网友评论

      本文标题:Ajax 跨域的解决方案

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