ajax通过服务端代理
1. 实现跨域名ajax数据获取,有哪些方法
Ajax 本身跨域是被浏览器给禁止的
那么要实现不刷新页面的情况下,改变页面内容或取得服务端数据,至少有下面 4 个方法
1.自己搭个服务端代理
这个兼容性最好,特别是目标点不是自己可以操作的情况下,能够自己转化为标准的 js 数据
2.用 Flash 去跨域
这个网上例子就多了,但似乎也需要在目标点配置跨域的文件
3.用 <iframe> 节点载入
src 里填写目标地址,目标地址反馈的是一个完整的 HTML 页面,同时包含 Ajax 的数据
但由于 iframe 跨域操作也有限制,那么主要适合同根域的情况
4.用 <script> 节点载入
如果目标点的数据可以自己来控制,那么这个方法最合适,在需要载入数据的时候,
你可以在页面 new 出一个 script 的节点,可以选择异步操作还是同步操作,可以
在 src 里填写放回数据所要调用的方法名,使得在数据得到时,自动触发某个方法
如果出现莫名的问题
a. 请将请求通过 post 来发送试试 因为浏览器对 post 请求的跨域限制比较少,比如 Safari
b. 你的域名可能太短 这个是我见过的最诡异的问题,未必每个环境都会出现,但你也许能遇上..
时代互联为你解答!
2. Ajax如何使用代理 跨域 POST 请求
如果你要访问的那个域是你可操控的,你可以使用js脚本注入的方式跨域。
3. ajax处理跨域有几种方式实现原理是什么
Ajax
本身跨域是被浏览器给禁止的
那么要实现不刷新页面的情况下,改变页面内容或取得服务端数据,至少有下面
4
个方法
1.自己搭个服务端代理
这个兼容性最好,特别是目标点不是自己可以操作的情况下,能够自己转化为标准的
js
数据
2.用
Flash
4. ajax怎么与服务端异
AJAX,即Asynchronous Javascript And XML,AJAX本质是在HTTP协议的基础上以异步的方式与服务器进行通信。
所谓的异步,是指某段程序执行不会阻塞其他程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序。
从而提升整体执行效率。
1:客户端请求
js内置http请求对象 XMLHttpRequest;
a、请求行
xhr.open() 发起请求,可以是get、post方式
get和post请求方式的差异
1、GET没有请求主体,使用xhr.send(null)
2、GET可以通过在请求URL上添加请求参数
3、POST可以通过xhr.send('name=itcast&age=10')
4、POST需要设置
5、GET效率更好(应用多)
6、GET大小限制约4K,POST则没有限制
b、请求头
xhr.setRequestHeader() 设置请求头
c、请求内容
xhr.send() 发送请求主体 get方式使用xhr.send(null)
2:服务端相应
HTTP响应是由服务端发出的,由于服务器做出响应需要时间(比如网速慢等原因),所以我们需要监听服务器响应的状态,然后才能进行处理。
a、获取状态行(包括状态码&状态信息)
xhr.status 状态码,如200、304、404等; xhr.statusText 状态码信息如OK;
b、获取响应头
xhr.getResponseHeader('Content-Type')获取指定头信息;xhr.getAllResponseHeaders();获取全部响应头信息;
c、响应主体
xhr.responseText xhr.responseXML 都表示响应主体,我们需要检测并判断响应头的MIME类型后确定使用request.responseText或者request.responseXML。
onreadystatechange是Javascript的事件的一种,其意义在于监听XMLHttpRequest的状态,各种状态如下:
**readyState**
0:请求未初始化(还没有调用 open())。
1:请求已经建立,但是还没有发送(还没有调用 send())。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
4:响应已完成;您可以获取并使用服务器的响应了。
5. 我想通过ajax发送数据给服务器…………
需要对数据编码,上面的例子中:name=encodeURIComponent("java&jsp");
希望采纳
6. 有一个第三方接口,我要用ajax请求,出现跨域。不能修改第三方服务器,并且只能用post提交有什么方案
你好,你可以用ajax请求本地的接口,本地接口使用curl方式调用第三方服务器就没有问题了。
7. 如何通过添加js脚本进行http代理
在Ajax应用程序中,XmlHttpRequest对象负责将用户信息以异步通信地发送到服务器端,并接收服务器返回的响应信息和数据。
XMLHttpRequest简介
XMLHttpRequest可以提供不重新加载页面的情况下更新网页,在页面加载后在客户端向服务器请求数据,在页面加载后在服务器端接受数据,在后台向客户端发送数据。XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。尽管名为 XMLHttpRequest,它并不限于和 XML 文档一起使用:它可以接收任何形式的文本文档。XMLHttpRequest 对象是名为 AJAX 的 Web 应用程序架构的一项关键功能。
XMLHttpRequest和Javascript
Javascript本身并未具备向服务器发送请求的能力,要么使用window.open()方法重新打开一个页面向服务器提交请求,要么使用XMLHttpRequest对象发送请求。不同的是,前者是普通的即同步交互模式,而后者是异步交互方式。
8. 初学ajax,如何在服务器端完成处理
你那里需要和数据库连接就写在哪里
比如说你页面载入的时候需要连接就在page_load()里面写,如果想用按钮点击的话就在click()里面写
确保被调用的话就是说你要设置一个可触发的条件,不如说文本框检测,可以用onchange()的函数之类的意思
-----------------------------------------------
首先,我只能说你可以去看一下jquery,他帮你封装了很多javascript的函数,包括ajax函数,比如说ajax,只需要$.ajax()就能实现。
你所说我给你一张表,这个是所有input函数的集合
http://www.w3schools.com/TAGS/tag_input.asp
其中像你说的,可以用方法 onchange来实行自动检测是否有修改,有就会调用ajax函数
另外textbox的原名叫textarea,是区块文本输出
http://www.w3schools.com/TAGS/tag_textarea.asp
也可以用onchange来作为一个触发条件
其实 onblur 也是一个很好的条件,是失去焦点的时候触发
9. 如何伪造ajax服务返回信息
伪造ajax返回信息的方法有三种:
1、通过一个代理伪造response,例如使用调试工具Fiddler;
2、通过篡改DNS的方式(例如修改hosts)让脚本向你的服务器发送请求;
3、使用Web Inspector、Firebug等调试工具或上述方式修改代码。
以Fiddler篡改为例来说明:
1、打开并编辑Customize Rule文件,在方法 OnBeforeResponse 中插入修改代码,重启Fiddler重新加载Rule,运行。
插入代码如下:
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
// 判断是否为目标请求
var isMusicRequest = false;
if ((oSession.host == "m..com") && // host
oSession.fullUrl.Contains("suggest?ctl=his&action=list")) // url
{
isMusicRequest = true;
}
// 修改返回JSON串
if (isMusicRequest)
{
// 1, 获取Response Body中JSON字符串
var responseStringOriginal = oSession.GetResponseBodyAsString();
//FiddlerObject.log(responseStringOriginal); // 可在控制台中输出Log
// 2, 转换为可编辑的JSONObject变量
var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);
// 3, 修改JSONObject变量
// 3.1修改字段
responseJSON.JSONObject[‘singer‘] = "艾密莉亚·怀得堡";
// 3.2添加字段
var similarSong1= ‘{‘ +
‘"music": "dying in the sun",‘+
‘"singer": "The Cranberries"‘+
‘}‘;
var similarSong2= ‘{‘ +
‘"music": "seasons in sun",‘+
‘"singer": "WestLife"‘+
‘}‘;
var similarSong = ‘[‘ +
similarSong1 +
‘,‘ +
similarSong2 +
‘]‘;
responseJSON.JSONObject[‘similar song‘] = Fiddler.WebFormats.JSON.JsonDecode(similarSong).JSONObject ;
// 4, 重新设置Response Body
var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);
//FiddlerObject.log(responseStringDestinal);
oSession.utilSetResponseBody(responseStringDestinal);
}
}