PHP-Ajax跨域解决方案
1.先了解下Ajax跨域问题:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>AJAX跨域验证</title>
<script>
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
} function hello() {
var url = 'http://www.google.com';
createXMLHttpRequest();
xmlHttp.onreadystatechange = showResponse;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
} function showResponse(){
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
document.getElementById("result").setAttribute("value",xmlHttp.responseText) ;
}
}
}
</script>
</head>
<body>
<input type="button" value="hello" onclick="hello()"><br/><br/>
<textarea id="result" name="result" cols=100 rows=100 ></textarea>
</body>
</html>
如果以上代码放到Apache服务器下, 访问的话不会得到任何结果, 也就是说Ajax只能访问本站的资源。
那为什么限制Ajax跨域呢?
安全!如果能跨域访问的话, 想想CSRF攻击!
解决方案:
1.建立中间层;
用Ajax访问本站, 本站PHP利用file_get_contents()或CURL等工具去请求指定URL并返回想要结果
2.利用jQuery的一些Ajax访问方法, 比如$.ajax(), jQuery.getScript(), $.getJson等
3.直接改变script标签的src属性, 而src属性对应的URL返回设置的值(比如返回'var param="abcd";', 则页面可以直接调用param变量)
4.由于src属性(比如script、img、iframe)都拥有跨域的能力, 所以可以利用jsonp(可以认为是一种方式, 利用src), 虽然jQuery把jsonp归入ajax, 但他们真不是一回事儿, ajax的核心是通过XmlHttpRequest获取非本页内容, 而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本
PHP-Ajax跨域解决方案的更多相关文章
- asp.net web api2.0 ajax跨域解决方案
asp.net web api2.0 ajax跨域解决方案 Web Api的优缺点就不说了,直接说怎么跨域,我搜了一下,主要是有两种. 一,ASP.NET Web API支持JSONP,分两种 1, ...
- Ajax跨域解决方案大全
题纲 关于跨域,有N种类型,本文只专注于ajax请求跨域(,ajax跨域只是属于浏览器"同源策略"中的一部分,其它的还有Cookie跨域iframe跨域,LocalStorage跨 ...
- AJAX跨域解决方案
从AJAX诞生那天起,XMLHttprequest对象不能跨域请求的问题就一直存在,这似乎是一个很经典的问题了,是由于javascript的同源策略所导致. 解决的办法,大概有如下几种: 1. 使用中 ...
- 【PHP】Ajax跨域解决方案 、jsonp、cors
参考文章: 1.https://blog.csdn.net/u014727260/article/details/72793459 (后台java,实际上差不多) 2. 如何解决ajax跨域传输 数据 ...
- 前端Ajax跨域解决方案
业务场景: 前后端分离需要对接数据接口. 接口测试是在postman做的,今天才开始和前端对接,由于这是我第一次做后端接口开发(第一次嘛,问题比较多)所以在此记录分享我的踩坑之旅,以便能更好的理解,应 ...
- [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
知识点总结: JSONP(JSON with Padding): 1.script标签 2.用script标签加载资源是没有跨域问题的 在资源加载进来之前定义好一个函数,这个函数接收一个参数(数据), ...
- ajax跨域解决方案(服务端仅限java)
楼主前端知识菜鸟,高手勿喷,在此记录工作中遇到的问题及解决方案,大神请滤过 方法1.jsonp(js客户端ajax请求参数方式设置) 方法2.服务端接口设置: HttpServletResponse ...
- ajax跨域解决方案2
配置文件添加: <system.webServer> <httpProtocol> <customHeaders> &l ...
- 基于java过滤器实现的ajax跨域解决方案
http://software.dzhuvinov.com/cors-filter-configuration.html
- Ajax跨域问题及解决方案
目录 复现Ajax跨域问题 Ajax跨域介绍 Ajax跨域解决方案 一. 在服务端添加响应头Access-Control-Allow-Origin 二. 使用JSONP解决 小结 复现Ajax跨域问题 ...
随机推荐
- mysql数据库字符集初步理解
1.MySQL(4.1以后版本) 服务器中有六个关键位置使用了字符集的概念,他们是: 1.client 2.connection 3.database 4.results 5.server 6.sys ...
- iOS宏(自己使用,持续更新)
// 直接从RGB取颜色(RGB 0xFF00FF)#define UICOLOR_FROM_RGB(rgbValue) \[UIColor colorWithRed:((float)((rgbVal ...
- Informatica 常用组件Aggregator之二 分组依据端口
聚合转换允许您为聚合定义组,而不是在所有的输入数据间执行聚合.例如,您可以查找按地区分组的总销量,而不是查找总的公司销量. 要为聚合表达式定义组,请选择聚合转换中的相应输入.输入/输出.输出和变量端口 ...
- 第十六章 springboot + OKhttp + String.format
模拟浏览器向服务器发送请求四种方式: jdk原生的Http包下的一些类 httpclient(比较原始,不怎么用了):第一章 HttpClient的使用 Okhttp(好用,推荐) retrofit( ...
- 测试用的数据库Transaction Log太大, 用于缩减它的脚本
记在这里, 备用. select name, recovery_model_desc from sys.databases where name = 'WSS_Content_1000' USE WS ...
- 关于asp.net页面缓存
1,ASPX页面缓存 页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam=&q ...
- 【Dagger2】简介 配置 使用 MVP案例
简介 dagger2:https://github.com/google/dagger Maven Central 2.11版本jar包下载 dagger:https://github.com/sq ...
- jquery选择器用法笔记(第二部分)
今天继续讲讲jquery选择器的更多用法,希望能给大家带来帮助. 9.$("ul li:eq(3)") -- 列表中的第四个元素(index 从 0 开始) :eq() 选择器 ...
- 浅谈Jquery中的bind()、live()、delegate()、on()绑定事件方式
一.on(),live(),bind() on() 为指定的元素,添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数.使用 on() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建 ...
- IOS之导航控制器
UINavigationController是用于构建分层应用程序的主要工具,主要采用栈形式来实现视图.任何类型的视图控制器都可放入栈中.在设计导航控制器时需要指定根视图即用户看到的第一个视图.根视图 ...