angular 跨域请求 失败

发布于 2022-09-07 12:19:26 字数 874 浏览 28 评论 0

报错如下:

clipboard.png

代码:

list(criteria: RecommendModel) {
    return this.http.post('http://music.163.com/weapi/personalized/newsong',
      criteria,
      {
       /* headers: this.headers*/
        headers: new HttpHeaders({
          'Accept': '*/*',
          'Accept-Language': 'zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4',
          'Content-Type': 'application/x-www-form-urlencoded'
        })
      })
      .toPromise()
      .then((data: any) => {
        return data;
      })
      .catch((err) => {
        console.log(err);
      });
  } 

除了设置headers ,还需要处理其他吗?
接口是来自:
https://binaryify.github.io/N...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘿咻 2022-09-14 12:19:26

这个肯定访问不了的,服务端不允许

迷爱 2022-09-14 12:19:26

首先:

了解一下跨域是什么?
跨域是浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域

其次:

一般情况下,当使用ajax请求的时候,都会使用jsonp的方式,get方式的请求,如果要求是post方式,则用jsonp就不太合适了。
这时候可以考虑是用cors,也就是所谓的跨域资源共享,
CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可

所以你这里单纯只是设置客户端这边的header是没法起作用的。

苍景流年 2022-09-14 12:19:26

这个是需要服务器端在响应头里面设置Access-Control-Allow-Origin: "*");
如果是别人的API, 不可能在响应头里加的话, 可以使用这个chrome插件chrome://extensions/?id=jioikioepegflmdnbocfhgmpmopmjkim来帮助你跨域.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文