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

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

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

    如题,要跨域请求一个网站接口,对方网站点击按钮执行 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  
       238 天前
    跨域只是浏览器不允许跨域,你用服务器代码去请求,不存在跨域问题
    flmn
        2
    flmn  
       237 天前
    跨域是调用方浏览器的限制,不是被调用方服务器的限制。

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