angular.js - ionic2 浏览器跨域问题
天蓬老师
天蓬老师 2017-05-15 17:12:33
0
2
805

ionic2项目从Localhost向远程服务器提交Post请求,在真机中可以返回正确的数据,但是在Chrome中遇到了跨域的问题,查了些资料,配置了一下服务端的Access-Control-Allow,但是没效果,谁能看一下吗,下面是报错和代码。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(2)
滿天的星座

나 역시 이 함정에 직면했고 내 블로그에 전체 과정을 기록했습니다: http://www.haoguangbo.com/arc...

간단히 말하면, 실제 머신에서 접속하는 웹페이지는 http://https://가 아닌 file:// 프로토콜을 사용하기 때문입니다. 이므로 크로스 도메인 문제는 발생하지 않습니다. 그러나 브라우저에서 개발 및 디버깅할 때 ionic의 CLI는 실제로 소규모 서버를 로컬로 실행하고 웹 페이지 및 기타 리소스가 http를 통해 로드되므로 크로스 도메인 문제가 발생합니다. 도메인 문제가 발생합니다. file://协议,而非http://https://,因此不会出现跨域问题,但是浏览器里开发调试的时候,由于实际上是ionic的CLI在本地跑了一个小服务器,网页等资源都是通过http加载的,就会出现跨域问题。
解决这个其实很简单,后端服务器不需要做任何处理,只需要在ionic的配置文件(ionic.config.js)里加上proxy这个字段,如下所示:

{
  "name": "appname",
  "email": "",
  "app_id": "",
  "proxies": [
    {
      "path": "/api",
      "proxyUrl": "https://api.instagram.com/api"
    }
  ]
}

然后,在想访问https://api.instagram.com/api/xxx的时候,就改成访问/api/xxx,ionic会自动把以http://localhost:8000/api开头的请求都转发到https://api.instagram.com/api,就像shadowsocks一样。
最后重新ionic serve이 문제를 해결하는 것은 실제로 매우 간단합니다. 백엔드 서버는 어떤 처리도 할 필요가 없습니다. ionic 구성 파일(ionic.config.js)에 proxy 필드만 추가하면 됩니다. 코드>) 아래와 같습니다:
으아악
그런 다음 https://api.instagram.com/api/xxx에 액세스하고 싶을 때 /api/xxx에 액세스하도록 변경하면 ionic이 자동으로 http://localhost:8000/api로 시작하는 요청은 Shadowsocks와 마찬가지로 https://api.instagram.com/api로 전달됩니다.

마지막으로 ionic Serve를 수행하고 ionic을 다시 시작하세요. 🎜이 문제는 ionic 팀이 공식 문서에 작성해야 합니다. 정말 많은 사람을 망치게 됩니다. 🎜도움이 되기를 바랍니다. 🎜
某草草

CROS가 Angle로 설정되어 있나요?

$httpProvider.defaults.withCredentials = true;

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿