jquery 二级域名跨域 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anai1943
V2EX    前端开发

jquery 二级域名跨域

  •  
  •   anai1943 2016-01-19 20:59:09 +08:00 4900 次点击
    这是一个创建于 3632 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT ,用户服务网站的时候,有时候是用 abc.com 打开,有时候用 www.abc.com , jquery 发送 ajax 请求的时候,如果用户是用 abc.com 访问的,发送请求时如果用 www.abc.com ,获取不到数据,这种情况通常怎么解呢?

    16 条回复    2016-01-19 23:24:37 +08:00
    abelyao
        1
    abelyao  
       2016-01-19 21:12:24 +08:00 via iPhone
    如果是 AJAX 的话服务端可以设置允许跨域啊,这样的问题随便搜一下都一堆解决方式…
    anai1943
        2
    anai1943  
    OP
       2016-01-19 21:19:30 +08:00
    @abelyao 服务器端设置跨域后,会带来安全问题么?
    yangxiongwei
        3
    yangxiongwei  
       2016-01-19 21:23:57 +08:00
    js 里面用相对路径发请求啊,斜杠开头
    gamexg
        4
    gamexg  
       2016-01-19 21:25:56 +08:00 via Android
    可以限制可跨域的域名。
    更好的解决办法是 abc. com 重定向到 www.abc. com.

    ajax 硬编码的域名?
    lxrmido
        5
    lxrmido  
       2016-01-19 21:35:25 +08:00
    1 、在 www.abc.com 下做个中转页面,这个页面里设置 document.domain 为 abc.com ,在这个页面里写个 ajax 函数;
    2 、 abc.com 的页面中建个 iframe , iframe 指向上面建立的中转页面,然后要 ajax 时调用上面的 ajax 函数。
    anai1943
        6
    anai1943  
    OP
       2016-01-19 21:35:27 +08:00
    @yangxiongwei @gamexg
    恩 部分 ajax 请求就是这么写的,斜杠开头。
    现在时有一个特殊的场景,发送 ajax 的 url 是后端生成的 html 里面取的,蛋疼。不想改动 nginx 的配置文件了。用$_SERVER['HTTP_HOST']来识别访问的 url 是否是有 www ,后端处理了。。。
    zkd8907
        7
    zkd8907  
       2016-01-19 21:37:24 +08:00
    jsonp 方法,后台返回类似_Callback({..})格式的数据
    anai1943
        8
    anai1943  
    OP
       2016-01-19 21:38:23 +08:00
    @zkd8907 jsonp 不太合适,别人也能调用这个接口了,不安全吧。
    hxsf
        9
    hxsf  
       2016-01-19 21:43:33 +08:00
    js 里 用 location.host 来代替就行
    Zzzzzzzzz
        10
    Zzzzzzzzz  
       2016-01-19 21:46:50 +08:00
    服务器输出相应 CORS 头就行, IE8 和 IE9 的话可以用 XDomainRequest,jquery 的话引用个第三方 transport 可以支持.

    不过你带不带 www 都是同一个, 就请求的绝对链接有问题的话直接 hack 一下 ajax 函数的入口把 url 清理一下就好了.
    abelyao
        11
    abelyao  
       2016-01-19 21:47:54 +08:00 via iPhone
    @anai1943 不要用 * 这种通配符,只写允许跨域调用的域名就行
    sneezry
        12
    sneezry  
       2016-01-19 21:48:45 +08:00
    问题本身的解决办法:用相对路径替代绝对路径

    问题本身反映的问题, www 与不带 www 是两个不同的网站,如果输出相同的内容,应该做 301 跳转,这样对用户方便,对搜索引擎友好,也不会被搜索引擎降权
    Felldeadbird
        13
    Felldeadbird  
       2016-01-19 22:38:07 +08:00
    以 PHP 为例,
    header("Access-Control-Allow-Origin:*");
    header('Access-Control-Allow-Methods:POST,GET');
    header('Access-Control-Allow-Credentials:true');
    第一行就是声明那些来源域名允许跨域。 其他语言也差不多这样设置。
    至于安全嘛,这些跨域会产生什么安全呢?还有, ajax 即使不声明上述的设置,人家 ajax post 内容一样会到你后端去。所以 在后面 我通常会再判断是否 白名单域名,不是就直接终止运行。
    ccbikai
        14
    ccbikai  
    PRO
       2016-01-19 22:56:58 +08:00
    $.ajax('/test') 路径这样写
    adeweb
        15
    adeweb  
       2016-01-19 23:20:13 +08:00 via iPhone
    jsonp ,回调的函数名是一个约定生成的随机字符,比如 Callback84jdg4q9p({})。
    adeweb
        16
    adeweb  
       2016-01-19 23:24:37 +08:00
    @adeweb 看错了以为是不同的网站内容。相对路径就可以了,但建议还是做 301 跳转。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3032 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 12:32 PVG 20:32 LAX 04:32 JFK 07:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86