文档章节

ajax跨域访问笔记

bithup
 bithup
发布于 2017/12/06 18:41
字数 443
阅读 25
收藏 0

使用ajax跨域提交混合表单(包含图片)。

ajax跨域请求可以提交表单,但是无法接收到返回数据,返回数据会被浏览器拦截。

JSONP只支持GET请求,无法提交混合表单

在响应头中设置参数可以令浏览器不拦截返回的数据,

例:A服务器地址:www.aaa.com ; B服务器地址:www.bbb.com

用浏览器打开A服务器的网页a.html,在a.html中通过ajax提交混合表单到B服务器的b.htm接口;

b.htm接口可以在返回数据时,设置响应头(JavaEE)

response.setHeader("Access-Control-Allow-Origin", "http://www.bbb.com");
//或者,*是通配符,表示所有
response.setHeader("Access-Control-Allow-Origin", "*");

这样a.html就能接收到b.htm返回的数据

 

浏览器为什么要限制跨域访问?

防止CSRF(Cross-site request forgery)攻击

同源政策:浏览器中的cookie、storage、等都是通过域来划分的

A网页设置的 Cookie,B网页不能打开,除非这两个网页协议相同、域名相同、端口相同

使用js是可以调用另一个页面的js的

newWindow = window.open("homepage.html", "", "width=1024,height=768");
newWindow.document.getElementById("main_iframe").src = '/SxtOffical/jsp/charge/charge.htm
//同域的页面共享storage,可以通过storage建立两个页面间js的联系
function change(){
    localStorage.time=new Date().getTime();
}

window.onstorage=function(e){
    location.reload();
}

但是JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。

2.有哪些解决跨域访问的方法

  • w3c标准中,有针对跨域请求的规范
  • JSONP方式
  • 设置document.domain共享Cookie,可以在页面设置,也可在服务器端设置
  • 通过iframe+form实现。
  • 在服务器端使用java.net.URL.openStream()方法获取另一个服务器上的资源,然后再返回给页面。

© 著作权归作者所有

上一篇: SQL总结
bithup
粉丝 8
博文 101
码字总数 82172
作品 0
朝阳
程序员
私信 提问
CORS(Cross-Origin Resource Sharing) 跨域资源共享

CORS(Cross-Origin Resource Sharing) 跨域资源共享 CORS 全称:Cross-Origin Resource Sharing 中文意思:跨域资源共享? 好吧,目前中文方面的资料还比较少,能搜索到的那仅有的几篇相关介...

我是小强
2013/06/12
2.4K
0
Ajax跨域问题研究笔记

作者:fbysss msn:jameslastchina@hotmail.com blog:blog.csdn.net/fbysss 声明:本文由fbysss原创,转载请注明出处 关键字:Ajax跨域 一.试验准备 修改c:/windows/system32/drivers/etc/hos...

长平狐
2012/10/17
316
0
Vue2.0笔记——Ajax,JSONP跨域

Ajax实现 vue本身不支持发送AJAX请求,需要使用vue-resource、axios等插件实现。 axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行...

逝岁月
2018/04/16
0
0
juery的跨域请求2

时间过得好快,又被拉回js战场时, 跨域问题这个伤疤又开疼了. 好在,有jquery帮忙,跨域问题似乎没那么难缠了.这次也借此机会对跨域问题来给刨根问底,结合实际的开发项目,查阅了相关资料,算是解...

无信不立
2016/05/24
0
0
Web前端学习笔记之前端跨域知识总结

0x00 前言 相信每一个前端er对于跨域这两个字都不会陌生,在实际项目中应用也是比较多的。但跨域方法的多种多样实在让人目不暇接。老规矩,碰到这种情况,就只能自己总结一篇博客,作为记录。...

时光飞逝,逝者如斯
2018/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开发中常用的正则表达式

为了能够更好地理解如何在C#环境中使用正则表达式,这里整理了一些常用的正则表达式: 罗马数字: string p1 = "^m*(d?c{0,3}|c[dm])" + "(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$"; string t1 =......

木庄
6分钟前
1
0
【.NET程序打包】VS2019使用Installer Projects打包

C#—使用Installer Projects打包桌面应用程序 前言 打包桌面应用程序实在是一个不常使用的东西,偶尔使用起来经常会忘东忘西的耽误时间,因此,这篇文章多以图片记录过程,也是用于备忘。 下...

_Somuns
10分钟前
2
0
自定义注解,使用动态代理解决网站的字符集编码问题

第1章设置环境 安装操作系统,安装备份(镜像): JDK: 设置环境变量Eclipse:解压即可 Eclipse自身解压目录不包括中文 代码工作空间目录不包括中文Tomcat:解压不要包含中文目录M...

蓝来杯往
14分钟前
2
0
Solr中的字段类型field type

Solr含有多种字段类型,可用的字段类型基本都定义在了包org.apache.solr.schema中,列举如下: 类 说明 BinaryField 二进制数据 BoolField 布尔值,其中’t’/’T’/’1’都是true Collatio...

gantaos
28分钟前
3
0
《JAVA核心知识》学习笔记 (21. JAVA 算法)

21. JAVA 算法

Shingfi
35分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部