zoukankan      html  css  js  c++  java
  • [Unity WWW] 跨域访问解决方法

    什么是跨域访问

    域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。

    有一种简明的说法来解释广域跨域:跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。

    Unity发布的Web程序出现的跨域访问问题

    当使用WWW访问Web服务时,安全策略会阻止跨域的请求访问,会返回类似“Rejected because no crossdomain.xml policy file was found”等错误信息。

    Unity发布的Web程序需要跨域访问时的解决办法

    为提供Web服务的目录配置安全策略文件,即crossdomain.xml(还有人提过添加一个Web代理服务的解决办法,但相比较配置安全策略文件这种方法会更简单一些)。 

    文件内容如下:

    <?xml version="1.0"?>
    <cross-domain-policy>
    <allow-access-from domain="*"/>
    </cross-domain-policy>
    

    其中,在xml文档中domain=“*” 表示该服务目录允许任何外域来访问,你也可以把“*”替换成指定的域名,如下: 

    <?xml version=”1.0″?> 
    <cross-domain-policy> 
    <site-control permitted-cross-domain-policies=”master-only” /> 
    <allow-access-from domain=”s-static.facebook.com” /> 
    <allow-access-from domain=”static.facebook.com” /> 
    <allow-access-from domain=”static.api.ak.facebook.com” /> 
    <allow-access-from domain=”*.static.ak.facebook.com” /> 
    <allow-access-from domain=”s-static.thefacebook.com” /> 
    <allow-access-from domain=”static.thefacebook.com” /> 
    <allow-access-from domain=”static.api.ak.thefacebook.com” /> 
    <allow-access-from domain=”*.static.ak.thefacebook.com” /> 
    <allow-access-from domain=”*.static.ak.fbcdn.com” /> 
    <allow-access-from domain=”external.ak.fbcdn.com” /> 
    <allow-access-from domain=”*.static.ak.fbcdn.net” /> 
    <allow-access-from domain=”external.ak.fbcdn.net” /> 
    <allow-access-from domain=”www.facebook.com” /> 
    <allow-access-from domain=”www.new.facebook.com” /> 
    <allow-access-from domain=”register.facebook.com” /> 
    <allow-access-from domain=”login.facebook.com” /> 
    <allow-access-from domain=”ssl.facebook.com” /> 
    <allow-access-from domain=”secure.facebook.com” /> 
    </cross-domain-policy>
    

    需要注意的是,crossdomain.xml必须要是一个ASCII文件。

    另外需要注意的是,需要将crossdomain.xml文件放在服务器的一个的根目录下

    例如:

    • http://www.sample.net/crossdomain.xml
    • http://127.0.0.1:9097/crossdomain.xml

    在本地进行程序调试时,需要在Unity开发工具的菜单栏中打开Editor Setting.

    Edit->Project Setting->Editor

    需要将HostURL这个属性的值,修改成对应的URL服务器.

     

  • 相关阅读:
    太可爱了!CSS3 & SVG 制作的米老鼠钟表
    20个免费的 AngularJS 资源和开发教程
    比尔盖茨:反垄断案让我分心,不然微软定能打败安卓(胜者通吃的行业要不计代价的三班倒,评论很精彩)
    C++11 新特性之智能指针(shared_ptr, unique_ptr, weak_ptr)
    C++编译器会对没有构造函数的类生成默认构造函数吗?(有必要的时候才生成,要看情况。有反汇编验证)
    qt5信息提示框QMessageBox用法(很全)
    (RPC) Remote Procedure Call Protocol 远程过程调用协议
    分布式事务就是由多个本地事务组合而成的事务
    内存管理--虚拟内存管理技术
    NET适合搞大数据,机器学习、人工智能
  • 原文地址:https://www.cnblogs.com/daxiaxiaohao/p/4162648.html
Copyright © 2011-2022 走看看