V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nanqic
V2EX  ›  前端开发

如何请求不允许跨域的网站接口

  •  
  •   nanqic · 266 天前 · 597 次点击
    这是一个创建于 266 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,要跨域请求一个网站接口,对方网站点击按钮执行 fetch ,代码如下

    fetch(n, {
            credentials: "include",
            referrer: document.location.href
        }
    

    控制台查看 Network 信息如下:

    请求 URL: https://xxdomain.com/q/xxx
    请求方法: GET
    
    (下面是 header)
    Cookie: connect.sid=s%3Akdxxx
    Host: xxdomain.com
    Referer: xxdomain.com
    

    尝试:尝试了用 express 代理,没成功。

    let n = '接口地址'
            fetch(n, { 
                headers:{
                    'Cookie': 'connect.sid=s%3xx',
                }
                , referrer: 'xxx' })
            
            res.send(response.data);
    

    在 header 中放置 Cookie 跟 credentials: "include"一样吗?对方检测到了跨域,不让请求。

    欲求:有没有办法模仿浏览器的请求,带 cookie 访问,因为对方网站是不用登录的,cookie 很容易获取到。 前端或后端有办法模仿浏览器请求,来获取到接口数据吗?

    2 条回复
    cxe2v
        1
    cxe2v  
       266 天前
    跨域只是浏览器不允许跨域,你用服务器代码去请求,不存在跨域问题
    flmn
        2
    flmn  
       265 天前
    跨域是调用方浏览器的限制,不是被调用方服务器的限制。

    被调用方服务器可以做一些便利,告诉调用方允许跨域。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1440 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:29 · PVG 01:29 · LAX 09:29 · JFK 12:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.