iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >AJAX的跨域问题解决方案
  • 727
分享到

AJAX的跨域问题解决方案

ajax跨域问题以及解决方案ajax跨域是什么ajax调用跨域 2022-12-28 18:12:30 727人浏览 薄情痞子
摘要

目录跨域的概述区别同源与不同源同源策略有什么用?ajax跨域解决方案方案一、设置响应头方案二、JSONp方案三、代理机制(Httpclient)总结跨域的概述 跨域是指从一个域名的网

跨域的概述

  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跨域问题内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

本文链接: https://www.lsjlt.com/news/176135.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-05-14
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-05-14
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-05-14
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-05-14
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-05-14
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-05-14
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-05-14
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-05-14
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-05-14
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-05-14
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作