首页 新闻 会员 周边 捐助

Angular HttpClient 跨二级域名请求问题

0
悬赏园豆:30 [已解决问题] 解决于 2025-05-21 10:23

这次从 angular 15 升级到 angular 17 后遇到的问题,HttpClient 请求的代码如下

downloadImage(imageSrc: string, muteAlert = false): Promise<string | false> {
    return firstValueFrom(
        this.http
            .jsonp<string>(
                `${uploadApi()}/ImageUploader/DownloadImage?imgSrc=${encodeURIComponent(
                    htmlDecode(imageSrc)
                )}&app=blog`,
                'callback'
            )
            .pipe(this.falseOnError(muteAlert))
    );
}

angular 应用所用的域名是 i.cnblog.com,HttpClient 请求的域名是 upload.cnblogs.com, 升级之前正常,升级后 HttpClient 请求时没有带 .cnblogs.com 的 cookie

dudu的主页 dudu | 高人七级 | 园豆:24567
提问于:2025-05-18 18:48
< >
分享
最佳答案
0

需要在 app.config.js 中,给 provideHttpClient 加上 withJsonpSupport

provideHttpClient(withJsonpSupport(), withFetch())
dudu | 高人七级 |园豆:24567 | 2025-05-18 21:59

添加了出现了新的错误

JSONP requests do not support headers
dudu | 园豆:24567 (高人七级) | 2025-05-18 22:00

angular 中对应的源码 jsonp.ts#L125

dudu | 园豆:24567 (高人七级) | 2025-05-18 22:59

对于 jsonp 的问题没有找到解决方法,后来通过修改服务端 api 返回 json 解决了

dudu | 园豆:24567 (高人七级) | 2025-05-21 10:23
其他回答(1)
0

F12调试模式下看下有没有相关的警告,看下接口是否返回了cookie上面是否有叹号警告,然后再具体分析,有次我遇到是http接口自动跳转https会导致浏览器cookie的处理的问题

收获园豆:30
青争竹马 | 园豆:5842 (大侠五级) | 2025-05-21 09:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册