V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
skyshy
V2EX  ›  问与答

大家是如何解决浏览器的跨域 POST 请求? :joy:

  •  
  •   skyshy · 2015-08-16 17:49:34 +08:00 · 2946 次点击
    这是一个创建于 3180 天前的主题,其中的信息可能已经有所发展或是发生改变。
    通过JSONP解决跨域资源共享,其实就是一个js的的GET请求。

    可是不知道怎么解决这种跨域的POST请求。

    说多了都是泪 。:sob:
    10 条回复    2015-08-17 00:50:47 +08:00
    fiture
        1
    fiture  
       2015-08-16 17:50:31 +08:00 via Smartisan T1
    post 到iframe里面
    w88975
        2
    w88975  
       2015-08-16 17:52:32 +08:00   ❤️ 1
    abelyao
        3
    abelyao  
       2015-08-16 18:02:14 +08:00
    为啥不能跨域 POST?
    经常在客户端直接把用户上传的文件 POST / PUT 到云存储上。
    先说明服务端(接收端)是不是在自己掌控的手里,如果是的话只要允许跨域请求就好咯。
    skyshy
        4
    skyshy  
    OP
       2015-08-16 21:34:57 +08:00
    @fiture iframe 不是只能是子域名的吗?
    @abelyao 只有客户端,服务端不是我这边掌控
    learnshare
        5
    learnshare  
       2015-08-16 21:41:25 +08:00
    能在服务端解决,就在服务端解决
    napsterwu
        6
    napsterwu  
       2015-08-16 21:46:38 +08:00
    allow access allow control
    abelyao
        7
    abelyao  
       2015-08-17 00:08:20 +08:00
    @skyshy 如果服务端不能控制,并且不支持跨域的话,就自己做个后端,转发一下请求。但只适合流量小的情况。
    dong3580
        8
    dong3580  
       2015-08-17 00:15:29 +08:00   ❤️ 1
    JSONP那种方法不叫解决方案,只会诱导你对get/post的误解。
    四种解决方案,

    1.服务器端配置,允许跨域,然后 浏览器端 js post/get请求,都可跨域,设置方案参照#2的答案连接中#10;
    2.写个Chrome的拓展,可以js跨域请求;
    3.在IE浏览器中,设置允许跨域请求;
    4.使用后端 get/post 中转结果, 返回值。
    zakokun
        9
    zakokun  
       2015-08-17 00:20:11 +08:00
    一般单靠前端不可能解决
    都是服务器允许跨域就可以了
    superloop
        10
    superloop  
       2015-08-17 00:50:47 +08:00   ❤️ 1
    以前人人网是在网页里加个带javascript的iframe作为代理页面转发post请求
    而调用iframe的js则通过修改iframe的window.location属性来和iframe中的javascript通信
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1317 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:10 · PVG 01:10 · LAX 10:10 · JFK 13:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.