跨域问题解决办法
来源:互联网 发布:阿里云销售面试流程 编辑:程序博客网 时间:2024/05/09 04:15
跨域问题
1. 设置Access-Control-Allow-Origin
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。通过设置Access-Control-Allow-Origin来实现跨域访问比较简单。
例如:
客户端的域名是www.client.com,而请求的域名是www.server.com
如果直接使用ajax访问,会有以下错误
XMLHttpRequest cannot load http://www.server.com/server.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://www.client.com' is therefore not allowed access.
修改被请求的Response header
- java
response.setHeader("Access-Control-Allow-Origin", "*");
添加位置可以在下面三处任选一个。(1)可以在过滤器 filter 中的 dofilter() 方法设置。(2)可以在 servlet 的 get 或者 post 方法里面设置。(3)可以放在访问的 jsp 页面第一行。
- PHP
// 指定允许其他域名访问 header('Access-Control-Allow-Origin:*'); // 响应类型 header('Access-Control-Allow-Methods:POST'); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type');
2. JSONP
3. document.domain
将子域和主域的document.domain设为同一个主域。前提条件:这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域。
- 在页面 http://www.example.com/a.html 中设置document.domain:
<script type="text/javascript"> document.domain = 'example.com';//设置成主域 function test(){ alert(document.getElementById('iframe').contentWindow);//contentWindow 可取得子窗口的 window 对象 }</script>
- 在页面 http://example.com/b.html 中也设置document.domain:
<script type="text/javascript"> document.domain = 'example.com';//在iframe载入这个页面也设置document.domain,使之与主页面的document.domain相同</script>
4. window.name
window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的
5. window.postMessage
window.postMessage(message,targetOrigin) 方法是html5新引进的特性,可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源,目前IE8+、FireFox、Chrome、Opera等浏览器都已经支持window.postMessage方法。
- 跨域问题解决办法
- AJAX跨域问题解决办法
- 浏览器跨域问题解决办法
- 浏览器跨域问题解决办法
- web service跨域访问问题解决办法
- ajax请求ashx跨域问题解决办法
- ajax服务跨域问题解决办法
- 关于js的跨域问题解决办法
- Silverlight跨线程问题解决办法
- JQuery ajax调用webservice跨域问题解决办法
- iframe跨域访问session丢失问题解决办法
- Ajax无刷新上传文件跨域问题解决办法
- Flash实现Websocket的跨域问题-安全沙箱问题解决办法
- angular4 通过httpclient调http接口,出现access-control-allow-origin跨域问题解决办法
- 中文问题解决办法
- java路径问题解决办法
- Drupal中文搜索问题解决办法
- struts乱码问题解决办法
- 进制的转换,八进制转换十六进制
- java实现日期排序问题
- HTML之下拉菜单
- Oracle游标
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
- 跨域问题解决办法
- Unity3D研究院编辑器之创建旧版动画
- java 4笔记
- 9月27日云栖精选夜读:阿里云首推免费人脸识别SDK 让每个APP轻松拥有短视频AR特效
- webrtc中的系统音视频设备监测
- 整数中出现1的数目(从1到n的整数中出现1的次数)
- linux c md5加密 使用 openssl
- 博客搬家
- 第一次作业。