解决跨域相关!

已邀请:

xiaosong

赞同来自: ohkei elfhuv

跨域问题分为两种:一种是文件请求跨域,一种是数据请求跨域;
1、文件请求跨域的解决方法有两种,一种是上面同事说的,此种方法只能解决本地调试的问题,无法解决其他主机存在的跨域问题,想彻底解决文件跨域问题,需要修改webServer(一般webserver大多数都是 apache、nginx、tomcat等),在请求特定的域名下加上跨域标识,这里以nginx为例:
http {
  ......
  add_header Access-Control-Allow-Origin *;
  add_header Access-Control-Allow-Headers X-Requested-With;
  add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
  ......
}
这样就可以实现GET,POST,OPTIONS的跨域请求的支持
也可以 add_header Access-Control-Allow-Origin http://www.layabox.com; --指定允许的url;
2、数据请求跨域需要后端语言配合修改,在请求里加上header标识,这里以php语言为例:
header("Access-Control-Allow-Origin: *");不一定用*,*是允许所有的主机跨域访问,你也可以写指定域名下的主机可以访问;

cuixueying

赞同来自: shenzhe charley

由于浏览器本身默认的是不允许文件跨文件读取的,会涉及到跨域的问题。
通过添加启动参数可以解决跨域问题。
在chrome浏览器快捷方式->右击打开属性->快捷方式一栏->目标末尾添加 --allow-file-access-from-files
打开快捷方式,将转换后自动生成的html文件拖拽至chrome浏览器即可正常显示。
 

layaFlash - LayaFlash为Flash程序员而生

赞同来自: charley a365571557

即将推出新的LayaFlash工具,集成运行器调试环境

mingchaoyan

赞同来自:

mac 用户可在ide上用二维码打开
嗯,虽然麻烦点,但是勉强可用
1.7.7

taisss

赞同来自:

mac用户直接用Safari, 本地调试没有跨域烦恼!

aidimiebear

赞同来自:

前段时间我用laya做了一个联网的游戏,涉及了跨域的问题,我的服务端用的skynet,http服务也是用的skynet提供的http例子自己做的扩充,我的解决方案是在服务端做了处理,在返回数据时添加了个附加参数,例如这样,  response(id, code, result, {["Access-Control-Allow-Origin"]="*"})     希望对用skynet做服务端http的朋友有帮助。如果是apache或者nginx的话也是可以在服务端返回的时候加上这样类似的参数,不过如果是正式环境的话,最好不要用*,会留下漏洞的。

xiaosong

赞同来自:

谢谢!

CrossCrush

赞同来自:

Mac下可使用命令行打开chrome,记住先关闭当前chrome窗口。
 
open -a /Applications/Google\ Chrome.app --args --disable-web-security --user-data-dir

180*****197

赞同来自:

问一下 "在request header加上Origin" 是个什么写法

郭一伟

赞同来自:

我们服务器休假去了,自己正做laya小程序做测试,这几天被服务器整的头大,服务器也不知道死哪去了,用netty做的我也不知道怎么改,我总结了几个问题,等服务器滚回来时一起算帐
1,加‘--allow-file-access-from-files’头,是在前端加?tomcat加?后端加?还是都加?
2,目前没加头,让服务器和web程序在同一机器里跑,在send后,仍然没有反应,用layaair调式有反应,这算跨域问题吗?这是SSL的问题吗?
3,我想做个测试,不用我们那个死服务器了,就连www.baidu.com,这个加头后,为啥还连不上,
看代码->
this.hr=new HttpRequest();
this.hr.once(Laya.Event.PROGRESS, this, this.onHttpRequestProgress);
this.hr.once(Laya.Event.COMPLETE, this, this.onHttpRequestComplete);
this.hr.once(Laya.Event.ERROR, this, this.onHttpRequestError);
this.hr.send("http://www.baidu.com", null, 'post', 'text',
['Access-Control-Allow-Origin','*',
'Access-Control-Allow-Headers','X-Requested-With',
'Access-Control-Allow-Methods','GET,POST,OPTIONS']);//一定在哪写错,快来帮我看看呀
 
我没做过H5,没做过WEB,都是我们那个万恶的策划逼我把cocos的项目用laya重写,十几万行代码呢,C++转成TS,说这有前途,跨域不知道是啥,只能理解成不是一个路由器下的两台机器,别喷我,每个人是从小小白成长起来的。

要回复问题请先

商务合作
商务合作