javascript - php js 跨域请求
ajax 请求本域名下的一个方法 userInfo,获取用户信息,但是在获取用户信息的userInfo方法,是使用了单点登录系统的,所以获取信息的过程存在跨域,这样ajax 请求就会报错,请问如何解决?
回复内容:
ajax 请求本域名下的一个方法 userInfo,获取用户信息,但是在获取用户信息的userInfo方法,是使用了单点登录系统的,所以获取信息的过程存在跨域,这样ajax 请求就会报错,请问如何解决?
我想到方法
1- 使用本地的php通过curl获取,这样ajax只要请求本地的php就不会发生跨域了,而PHP端的curl是没有跨域限制的。
2- 宿主端提供js脚本,伴生系统引用该js,并调用其中声明的方法进行ajax请求就不属于跨域了。
通常我都是用方法1,方法2需要宿主端系统的开发人员配合,太麻烦。
在php层做一个代理,让php请求那个跨域接口,然后php再把数据返回到页面上。
这个接口不能用jsonp,不是不能实现,是不安全。不能泄漏用户信息,因为是userinfo,所以必须注重安全问题。
跨域时,地址参数中要加一个回调函数,在js里,在这个回调函数里处理返回的数据。这里有一个post的跨域,可以参考一下。https://github.com/limeng0403/libs/blob/master/EOF/getJSON%E5%9C%A8PHP%E7%8E%AF%E5%A2%83%E4%B8%8B%E5%AE%9E%E7%8E%B0%E8%B7%A8%E5%9F%9F%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD.md
使用ajax jsonp
纯
GET
请求可以用jsonp
支持
CORS
的浏览器,可用CORS
请求数据步骤
发送请求--->服务器响应返回--->浏览器接受响应--->判断是否是同域下
是的话,就把响应数据返回给ajax。不是的话就提醒禁止跨域请求。
其实服务端可以在响应头中增加
header("Access-Control-Allow-Origin: 允许的域");
header("Access-Control-Allow-Methods: 允许请求的方法");
header("Access-Control-Allow-Headers: X-PINGOTHER");
告诉浏览器可以把响应值返回给此请求
参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
跨域可以参考下面这篇文章
http://www.cnblogs.com/duanhuajian/p/4211616.html
header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');
在你的php文件中添加上这个
可以使用JSONP请求
我刚刚整理的解决跨域请求的三种方法:https://segmentfault.com/a/1190000004539815
postMessage();onmessage。
最好的是使用php curl代理过去,控制度高一点。
第二就是修改服务器接口文件,打开跨域限制,这样ajax就可以调用了。
第三就是建议楼主用jsonp了。
具体单点登录系统内部怎么实现的没有去看,奇怪的一点是,如果我通过浏览器直接访问userInfo方法 是可以获取用户的信息,然后ajax 再请求userInfo 方法 就能正常返回用户信息了,很是奇怪,所以我用了一个很笨的方法,就是在页面底部用了一个iframe,iframe加载应该是一次http请求,就正常了!但直接访问为什么报跨域的错误的原因还是没有找到,感谢大家的回答! @incNick @大猛 @张亚涛 @ 等等……

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
