导航:首页 > IDC知识 > 域名跨域

域名跨域

发布时间:2020-09-11 15:12:58

1、如何解决iframe跨域子域名间跨域操作js的问题

建立隐藏iframe前页面b.html,并前页定义函数a服务器端返数据重定向同域页面(a.html)a.html写段js执行函数a提取a.html数据obj并数据作参数传给函数window.parent.a(obj);a.html包含b.html所window.parent.a(obj)其实调用b.html定义a函数硬跨域数据拿

2、跨域有哪几种方式?

1. 通过jsonp跨域

2. document.domain+iframe跨域

3. nginx代理跨域

4. nodejs中间件代理跨域

5. 后端在头部信息里面设置安全域名

3、域名下异步请求ip 会不会跨域

这个是什么意思的呢 想注册域名的话直接注册就可以的吧 没听过这种的哦 top的

4、跨域是指什么,因为什么引起的?有哪些解决方案?web前端知识

域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。 有一种简明的说法来解释广域跨域:跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。


解决方案:

1、js向服务器发送请求,然后让服务器去另一个域上获取数据后返回。(用于你无法控制另一个域) 比如php中利用cUrl。
2、放置跨域文件.
3、用JSONP。虽然不能跨域进行通信,但是可以引入跨域的js文件。
先定义一个函数

var returnData;
function getData(obj) {
   returnData = JSON.parse(obj);
}


当我们要向www.baidu.com/s.php请求数据的时候,我们可以引入某个包含返回信息的js文件。
比如: <script type="text/javascript" src="www.baidu.com/s.php?id=12321" />
js的内容是getData({json:'格式'});返回时输出 格式是 text/javascript (比如php用header('Content-type:text/javascript');来输出)
那么文件加载好后解析js时就会执行这个函数,返回得到的数据就被赋值给了returnData变量
以这样的方式插入到页面中:

var script = document.createElement('script');
script.src='www.baidu.com/s.php?id=12321';  //传入参数id=12321
body.appendChild(script);

5、什么是跨域,跨域的实现方式有哪些

什么是跨域?
同源策略是由Netscape提出的著名安全策略,是浏览器最核心、基本的安全功能,它限制了一个源(origin)中加载文本或者脚本与来自其他源(origin)中资源的交互方式
,所谓的同源就是指协议、域名、端口相同。
当浏览器执行一个脚本时会检查是否同源,只有同源的脚本才会执行,如果不同源即为跨域
跨域的几种方式
在项目中可能会需要在一个域名下请求另外一个域名的资源,下面我们来探讨下跨域的几种实现方式
jsonp
最常见的一种跨域方式,其背后原理就是利用了script标签不受同源策略的限制,在页面中动态插入了script,script标签的src属性就是后端api接口的地址,并且以get的方式将前端回调处理函数名称告诉后端,后端在响应请求时会将回调返还,并且将数据以参数的形式传递回去。

6、网站A想要跨域访问网站B,B能获取A的真实域名吗?如果可以,请说明详细方法。

一些站长软件是能做到的。数据之家什么的都有这个功能的。只要在b网站上加一段代码就可以了

7、不同ip地址,不同域名,能通过cors跨域吗

CORS跨域支持不同端口、不同IP/域名等各种跨域
只要对方返回正确的跨域响应头,并且当前浏览器支持,则可以跨域

8、为什么设置了域名,微信还是跨域拒绝

必须开通旺铺,才能设置二级域名的,如果到期不续费会回收域名,新手卖家现在有旺铺扶持版,没有一钻信誉的都可以免费使用旺铺,超过1钻信誉的必须付费

我的淘宝-店铺管理-域名设置,然后设置你想要的域名,保存

9、如何解决跨域问题

特别注意两点:
第一,如果是协议和端口造成的跨域问题“前台”是无能为力的,
第二:在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。
“URL的首部”指window.location.protocol +window.location.host,也可以理解为“Domains, protocols and ports must match”。
2. 前端解决跨域问题
1> document.domain + iframe (只有在主域相同的时候才能使用该方法)
1) 在www.a.com/a.html中:

复制代码
document.domain = 'a.com';
var ifr = document.createElement('iframe');
ifr.src = 'http://www.script.a.com/b.html';
ifr.display = none;
document.body.appendChild(ifr);
ifr.onload = function(){
var doc = ifr.contentDocument || ifr.contentWindow.document;
//在这里操作doc,也就是b.html
ifr.onload = null;
};
复制代码
2) 在www.script.a.com/b.html中:

document.domain = 'a.com';

2> 动态创建script
这个没什么好说的,因为script标签不受同源策略的限制。

复制代码
function loadScript(url, func) {
var head = document.head || document.getElementByTagName('head')[0];
var script = document.createElement('script');
script.src = url;

script.onload = script.onreadystatechange = function(){
if(!this.readyState || this.readyState=='loaded' || this.readyState=='complete'){
func();
script.onload = script.onreadystatechange = null;
}
};

head.insertBefore(script, 0);
}
window.baidu = {
sug: function(data){
console.log(data);
}
}
loadScript('http://suggestion.baidu.com/su?wd=w',function(){console.log('loaded')});
//我们请求的内容在哪里?
//我们可以在chorme调试面板的source中看到script引入的内容
复制代码

3> location.hash + iframe
原理是利用location.hash来进行传值。

假设域名a.com下的文件cs1.html要和cnblogs.com域名下的cs2.html传递信息。
1) cs1.html首先创建自动创建一个隐藏的iframe,iframe的src指向cnblogs.com域名下的cs2.html页面
2) cs2.html响应请求后再将通过修改cs1.html的hash值来传递数据
3) 同时在cs1.html上加一个定时器,隔一段时间来判断location.hash的值有没有变化,一旦有变化则获取获取hash值
注:由于两个页面不在同一个域下IE、Chrome不允许修改parent.location.hash的值,所以要借助于a.com域名下的一个代理iframe

代码如下:
先是a.com下的文件cs1.html文件:

复制代码
function startRequest(){
var ifr = document.createElement('iframe');
ifr.style.display = 'none';
ifr.src = 'http://www.cnblogs.com/lab/cscript/cs2.html#paramdo';
document.body.appendChild(ifr);
}

function checkHash() {
try {
var data = location.hash ? location.hash.substring(1) : '';
if (console.log) {
console.log('Now the data is '+data);
}
} catch(e) {};
}
setInterval(checkHash, 2000);
复制代码
cnblogs.com域名下的cs2.html:

复制代码
//模拟一个简单的参数处理操作
switch(location.hash){
case '#paramdo':
callBack();
break;
case '#paramset':
//do something……
break;
}

function callBack(){
try {
parent.location.hash = 'somedata';
} catch (e) {
// ie、chrome的安全机制无法修改parent.location.hash,
// 所以要利用一个中间的cnblogs域下的代理iframe
var ifrproxy = document.createElement('iframe');
ifrproxy.style.display = 'none';
ifrproxy.src = 'http://a.com/test/cscript/cs3.html#somedata'; // 注意该文件在"a.com"域下
document.body.appendChild(ifrproxy);
}
}

10、二级域名之间可以相互跨域吗?

可以的,但是一定要保持内容的相关性,不搭边的内容不要跨域。

与域名跨域相关的知识