跨域访问

最近实习中遇到了一个跨域访问的问题,在今天终于解决了,在这里记录一下吧。也可以整理一下自己当中遇到的问题以及解决办法。
调用一个LDAP接口进行身份验证。我尝试通过AJAX请求进行身份的验证,其中就涉及了一个跨域访问的问题,默认情况下,XHR对象只能访问与包含它的页面位于同一域中的资源。
首先说说跨域产生的原因:
浏览器同源策略的限制,何为同源策略,即:不同域名、不同端口、不同的协议不循序共享资源。保障浏览器安全。
跨域问题的解决方案:
1、修改浏览器的设置
不建议,因为你不可能让你的每一个用户都去修改用户的浏览器设置
2、修改请求方式:jsonp
条件:需要前后端合作
JSONP通过动态

function handleResponse(response){
			alert("You are at IP address" +response.ip +", which is in " +response.city +", "+response.region_name);
		}
		var script = document.createElement("script");
		script.src = "http://freegeoip.net/json/?callback=handleResponse";
		document.body.insertBefore(script,document.body.firstChild);

其中需要后端允许callback,前后端协商确定回调函数的名字,即这里的handleResponse
缺点:JSONP支支持GET请求
3、CORS
修改浏览器设置
CORS
背后思想:使用自定义的HTTP头部让浏览器与服务器进行沟通(就像人进行暗号对接一样,只是这里是在浏览器与服务器之间),从而决定请求或响应是应该成功还是应该失败。
如一个简单的使用GET或是POST发送的请求,他没有定义的头部,而主题内容是text/plian。在发送该请求时,需要给它附加额外的origin头部。其中包含请求页面的辕信息(协议、域名和端口),以便服务器根据这个头部信息来决定是否给予相应。如果服务器认为请求可以接受,就在Access-Control-Allow-Origin头部中发回相同的源信息。
如果没有这个头部信息,或者有头部信息但是不匹配,浏览器就会驳回请求。

附上觉得写的比较好的关于跨域的解答:
https://blog.csdn.net/cuixiaogang110/article/details/81948173

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值