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

266 天前
 nanqic

如题,要跨域请求一个网站接口,对方网站点击按钮执行 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 很容易获取到。 前端或后端有办法模仿浏览器请求,来获取到接口数据吗?

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

被调用方服务器可以做一些便利,告诉调用方允许跨域。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1022903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX