get请求与post,跨域

1、get是最常见的请求类型,常用于向服务器查询某些信息,必要时可以将查询字符串参数追加到url的末尾,以便将信息发送给服务器。

对XHR来说位于传入open()方法的url末尾的查询字符串必须经过正确的编码才行。

2、post请求

使用频率仅次于get请求,通常用于向服务器发送应该被保存的数据,post请求应该把数据作为请求的主体提交,而get请求传统上不是这样。post请求的主体可以包含非常多的数据,而且格式不限。

跨域源资源共享:

cors:使用自定义的http头部让浏览器与服务器进行沟通,从而决定请求或响应应该成功还是失败。在发送请求时需要给它附加一个额外的origin头部

IE对cors的实现:引入了XDR类型

其他跨域技术

1、图像ping

动态创建图像经常用于图像ping,图像ping 是与服务器进行简单、单向的跨域通信的一种方式。请求的数据是通过查询字符串的形式发送的,而相应可以是任意内容,但通常是像素图或204响应。通过图像ping浏览器得不到任何具体的数据,但是通过侦听load和error事件,能知道响应是什么时候接收到的。

2、jsonp

jsonp看起来与json差不多,只不过是被包含在函数调用中的JSON,就像下面这样

callback({"name":"Nicholas"});

jsonp由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。回调函数的名字一般是在请求中指定的,而数据就是传入回调函数中的json数据,下面是一个典型的jsonp请求

http://freegeoip.net/json/?callback = handleResponse

jsonp是通过动态<script>元素来使用的,使用时可以为src属性指定一个跨域url,这里的<script>与<img>元素类似,都有能力不受限制的从其它域加载资源,因为jsonp是有效的js代码,所以在请求完成后,即在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);

原文地址:https://www.cnblogs.com/lu-yangstudent/p/8177196.html

时间: 2024-11-02 16:24:17

get请求与post,跨域的相关文章

客户端ajax请求为实现Token验证添加headers后导致正常请求变为options跨域请求解决方法

客户端为了实现token认证,通过Jquery的ajaxSetup方法全局配置headers: 全局配置headers后会导致部分不需要token认证的请求变为options请求,导致跨域访问.报错信息如下: CORS概念 支持CORS请求的浏览器一旦发现ajax请求跨域,会对请求做一些特殊处理,对于已经实现CORS接口的服务端,接受请求,并做出回应. 有一种情况比较特殊,如果我们发送的跨域请求为"非简单请求",浏览器会在发出此请求之前首先发送一个请求类型为OPTIONS的"

vue resource 携带cookie请求 vue cookie 跨域

vue resource 携带cookie请求 vue cookie 跨域 1.依赖VueResource 确保已安装vue-resource到项目中,找到当前项目,命令行输入: npm install vue-resource --save 在主方法添加 过滤 Vue.http.interceptors.push(function(request, next) {//拦截器 // 跨域携带cookie request.credentials = true; next() }) 以下是针对每个请

Ajax异步网络请求及JSONP跨域

1 // <-----Ajax-----> 2 function loadXMLDoc() { 3 function success(text) { 4 var textarea = document.getElementById('myid'); 5 textarea.value = text; 6 } 7 function fail(code) { 8 var textarea = document.getElementById('myid'); 9 textarea.value = 'E

关于angular.js请求数据的跨域问题

- 一般来说跨域只存在于浏览器上有这个问题.- 如果有碰到跨域问题 + 1.通过自己的服务器接受数据在转发(以下方法并不安全) + 2.在发送方的请求头中头添加:Access-Control-Allow-Origin: * (对方服务器支持) + 3.通过jsonp发送数据(jsonp只是一种数据格式)(对方服务器支持) - 什么是JSONP Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据. 为

【跨域请求】Ajax跨域请求JSONP

前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资料,原来如此... 为何一直知道jsonp,但一直迷迷糊糊的不明白呢?--网上那些介绍资料都写的太复杂了! 我是能多简单就多简单,争取让你十分钟看完! 1. 同源策略 ajax之所以需要"跨域",罪魁祸首就是浏览器的同源策略.即,一个页面的ajax只能获取这个页面相同源或者相同域的数据. 如何叫"同源"或者"同域"

使用ajax请求遇到的跨域问题

今天在使用ajax发请求的时候遇到如下问题: 以[Access-Control-Allow-Origin]为关键字搜索的结果进行改进,但没有效果. 返回仔细查看错误提示,发现ajax请求的url是localhost的,页面访问的是127.0.0.1,程序认为进行了跨域. 这里简单记录下怎么判断请求是跨域的.三个条件必须相同才不是跨域:①协议类型,如http和https就是不同的协议:②主机名:③端口号. 而我们在发送请求的时候,DNS总是将localhost解析为127.0.0.1,所以总认为l

jQuery异步请求(如getJSON)跨域解决方案

相信大家在使用jQuery异步请求非自己网站内相对资源(通过别人站点上的URL直接读取)使经常会遇到如下错误吧,实际上这些错误都是浏览器安全机制“搞的鬼”,才让我们开发路上遇到了拦路虎. 当你直接在浏览器中请求:“http://www.weather.com.cn/adat/sk/101110101.html”时会得到你需要的json数据. 当你通过jQuery的getJSON方法读取时你就会得到下列错误. Chrome提示错误: XMLHttpRequest cannot load http:

vue resource 携带cookie请求 vue cookie 跨域(六)

1.依赖VueResource  确保已安装vue-resource到项目中,找到当前项目,命令行输入: npm install vue-resource --save 在主方法添加 过滤 Vue.http.interceptors.push(function(request, next) {//拦截器 // 跨域携带cookie request.credentials = true; next() }) 以下是针对每个请求都会携带cookie ,也可以指定接口请求携带cookie this.$

web api 跨域请求,ajax跨域调用webapi

1.跨域问题仅仅发生在Javascript发起AJAX调用,或者Silverlight发起服务调用时,其根本原因是因为浏览器对于这两种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器明确地告知它允许跨域调用.假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据.一般情况下,如果我们直接使用 AJAX 来请求将会失败,浏览器也会返回“源不匹配”的错误,"跨域"也就以此由来. 2

PHP处理Ajax请求与Ajax跨域

PHP判断是否为Ajax请求 我们知道,在发送ajax请求的时候,可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, 或者$.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断.一般情况下$_SERVER['HTTP_X_RE