跨域会报40几_总结一下跨域的几种情况

本文详细介绍了在网站开发中常见的跨域问题,包括不同域名、子域名、协议及IP与域名之间的跨域情况,并提出了相应的解决方案。JSONP是一种常用的跨域解决方式,通过动态插入script标签实现数据传递。此外,通过设置服务器响应头`Access-Control-Allow-Origin`允许跨域访问,或者使用代理服务器转发请求来规避同源策略限制。示例代码展示了如何在Web后台实现这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网站开发中,经常会遇到跨域问题,下面总结一下集中常见的跨域问题。

1. 不同域名属于跨域,如:www.a.com 和www.b.com,另外www.a.com 和www.a.com.cn也属于不同域名。

2. 主域名和子域名(二级域名、三级域名等)跨域,如:www.a.com 和 bbs.a.com 跨域。

3. 不同协议属于跨域,如:http://www.a.com 和 https://www.a.com。

4. Ip和域名属于跨域,如:123.23.23.12 和 www.a.com。

那如何解决跨域呢?

如何解决跨域问题

JSONP   JSONP是JSON with Padding的略称。它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。关于jsonp的使用方式,可以参考http://blog.csdn.net/alen1985/article/details/6365394,优缺点可以参考http://blog.csdn.net/z69183787/article/details/19191385

添加响应头,允许跨域   addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问   addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式

代理的方式 服务器A的test01.html页面想访问服务器B的后台action,返回“test”字符串,此时就出现跨域请求,浏览器控制台会出现报错提示,由于跨域是浏览器的同源策略造成的,对于服务器后台不存在该问题,可以在服务器A中添加一个代理action,在该action中完成对服务器B中action数据的请求,然后在返回到test01.html页面。

Demo1(添加允许跨域请求的响应头)

html页面

Web后台

 

 按照上面的访问,由于127.0.0.1:8080和localhost:8081的域和端口不同,所以同样会出现跨域问题。 

现在用添加响应头的方式

Demo2(jsonp的callback方式)

这里演示的是jquery的ajax,后台采用的是webservice接口形式

注意此时的dataType为jsonp格式,看看后台的接收 

, 我们返回的其实就是一个函数的调用文本,这里注意,callback的名称,由于前台没有指定callback函数,所以这里自动生成了,如果想自定义回调函数名称如下操作,添加一行请求参数 

这样后台的回调函数名就变成了mytest 

浏览器发出的请求格式和响应数据如下,其实就是返回函数的调用,而需要返回的数据则以函数参数值的形式填入 

 此时控制台就能够获取到“hello world” 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值