AJAX的跨域问题解决方案

 更新时间:2022年12月28日 15:10:39   作者:假正经的小柴  
跨域简单的说,就是从一个域名的网页去访问另一个域名网页的资源,下面这篇文章主要给大家介绍了关于AJAX的跨域问题解决的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

跨域的概述

  1. 跨域是指从一个域名的网页去请求另一个域名的资源。比如从百度(https://baidu.com)页面去请求京东(https://www.jd.com)的资源。
  2. 通过超链接、form表单提交、window.location.href、document.location.href、script标签、img标签等方式进行跨域是不存在问题的。但在一个域名的网页中的一段js代码发送AJAX请求去访问另一个域名中的资源,由于同源策略的存在导致无法跨域访问,AJAX就存在这种跨域问题。
  3. 同源策略是指一段脚本只能读取来自同一来源的窗口和文档的属性,同源就是协议、域名和端口都相同。

下面是使用AJAX发送请求跨域访问资源出现的问题:请求的资源上不存在“访问控制允许源”标头:(就是被同源策略阻止了)

区别同源与不同源

区分同源和不同源的三要素:

协议域名端口

协议一致,域名一致,端口号一致,三要素都要一致,才是同源,其它一律都是不同源。

同源策略有什么用?

如果你刚刚在网银输入账号密码,查看了自己还有一万 元块钱,紧接着访问一些不规矩的网站,这个网站可以访问刚刚的网银站点,并且获取账号密码,那后果可想而知。所以,从安全的角度来讲,同源策略是有利于保护网站信息的。

AJAX跨域解决方案

有一些情况下,我们是需要使用AJAX进行跨域访问的。比如某公司的A页面a.aresourse.com)有可能需要获取B页面b.bresourse.com)。

方案一、设置响应头

核心原理:跨域访问的资源允许你跨域访问。(被调用方允许你可跨域访问)

实现:

response.setHeader("Access-Control-Allow-Origin","http://localhost:8080/ajax/ajax7.html");//允许某个
response.setHeader("Access-Control-Allow-Origin","*");//允许所有

方案二、jsonp

jsonp:json with padding

  • jsonp不是一个真正的AJAX请求。只不过可以完成AJAX的局部刷新效果。可以说jsonp是一种类AJAX请求的机制。

jsonp可以解决跨域问题。
注意:jsonp解决跨域的时候,只支持GET请求。不支持post请求。这是因为jsonp本就是动态的创建script标签从而达到跨域的效果。

下面是动态创建的代码:

效果展示:

jQuery封装了jsonp,也就是说可以使用jQuery库去进行编写jsonp代码,方便。

核心代码如下:

$.ajax({
	type:"GET",
	url:"跨域的url",
	dataType:"jsonp",   //指定数据类型
	jsonp:"fun",    //指定参数名(不设置的时候,默认是”callback“)
	jsonpCallback:"sayHello"   //指定回调函数的名字,不设置的时候,jQuery会自动生成一个随机的回调函数,
	//并且这个回调函数还会自动调用success的回调函数
})

方案三、代理机制(httpclient)

“调用方”解决跨域的问题是这个思路的:让发送出去的请求代理成是本域的
如果资源是本域的,那就侧面地进行了跨域。

使用Java程序怎么去发送get/post请求呢?【GET和POST请求就是HTTP请求】

  • 使用JDK内置的APIjava.net.URL....),这些API是可以发送HTTP请求的。
  • 使用第三方的开源组件,比如:apachehttpclient组件。(httpclient组件是开源免费的,可以直接用)。

总结

到此这篇关于AJAX的跨域问题解决的文章就介绍到这了,更多相关AJAX跨域问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用ajax xml的数据读取的HelloWorld程序

    用ajax xml的数据读取的HelloWorld程序

    我们经常会使用JavaScript实现动态的改变div里面的内容,尤其是使用ajax的时候,尤为重要。
    2009-04-04
  • ajax和fetch的区别点总结

    ajax和fetch的区别点总结

    在本篇文章里小编给大家整理了一篇关于ajax和fetch的区别点总结内容,对此有兴趣的朋友们可以跟着学习下。
    2021-12-12
  • Ajax jsonp跨域请求实现方法

    Ajax jsonp跨域请求实现方法

    这篇文章主要介绍了Ajax jsonp跨域请求实现方法的相关资料,需要的朋友可以参考下
    2015-11-11
  • ASP+AJAX+ACCESS数据库实例讲解三个步骤分享

    ASP+AJAX+ACCESS数据库实例讲解三个步骤分享

    其实说起AJAX的初级应用是非常简单的,通俗的说就是客户端(javascript)与服务端(asp或php等)脚本语言的数据交互
    2012-07-07
  • 使用$.getJSON实现跨域ajax请求示例代码

    使用$.getJSON实现跨域ajax请求示例代码

    getJSON调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数,下面有个不错的示例,需要的朋友可以参考下
    2013-11-11
  • Ajax实现评论提交

    Ajax实现评论提交

    Ajax实现评论提交...
    2006-10-10
  • axios和ajax的区别点总结

    axios和ajax的区别点总结

    在本篇文章里小编给大家整理的是一篇关于axios和ajax的区别点总结内容,对此有兴趣的朋友们可以跟着学习下。
    2021-12-12
  • AJAX初级教程之初识AJAX

    AJAX初级教程之初识AJAX

    本文是ajax初级教程的第一篇,本系列教程将从实用的角度出发,以最快的速度让读者掌握基本的AJAX应用,以最直接的方式展示AJAX技术。本文则讲解下AJAX的基础知识
    2014-12-12
  • jQuery下的Ajax调试步骤

    jQuery下的Ajax调试步骤

    Ajax 可以为用户提供更为丰富的用户体验。jQuery 对 Ajax 当然也提供了很好的支持,而且还抽象了各种浏览器对于 Ajax 支持方面令人痛苦的差异。接下来,通过本篇文章给大家介绍jquery下的ajax调试步骤,感兴趣的朋友可以参考下
    2015-09-09
  • 一句话解决AJAX中文乱码问题[推荐]

    一句话解决AJAX中文乱码问题[推荐]

    写了个通过一般处理程序处理的AJAX小程序 结果遇到了国内程序员遇到的最多的问题:中文乱码
    2008-10-10

最新评论