什么是跨域?

这个例子是csdn找的, 声明下哈

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:

http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)

http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)

http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

服务端进行跨域需要添加的代码:

class BaseHandler(tornado.web.RequestHandler):

    def set_default_headers(self):
print("setting headers!!!")
self.set_header("Access-Control-Allow-Origin", "*") # 这个地方可以写域名
self.set_header("Access-Control-Allow-Headers", "x-requested-with")
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') def post(self):
self.write('some post') def get(self):
self.write('some get') def options(self):
# no body
self.set_status(204)
self.finish()

可以按照前端目录ajax里面代码进行测试

js ---代码未测试

$.ajax({
url: "http://some_tornado/api",
type: "POST",
crossDomain: true,
data: 'some_data',
success: function (response) {
alert(response);
},
error: function (xhr, status) {
alert("error");
}
});
HTTPServerRequest(
protocol='http',
host='127.0.0.1:8000',
method='POST',
uri='/index',
version='HTTP/1.1',
remote_ip='127.0.0.1',
headers={
'Host': '127.0.0.1:8000',
'X-Requested-With': 'XMLHttpRequest',
'Content-Length': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Origin': 'http://127.0.0.1:8000',
'Referer': 'http://127.0.0.1:8000/index',
'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryvxqv8ydaMOJHVHin',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Accept-Language': 'zh-CN,zh;q=0.8'}
) {'file': [
{'content_type': 'image/png', 'body': '', 'filename': '2C($GHY%V5J8WXAO2S_M8@4.png'},
{'content_type': 'image/png', 'body': '', 'filename': '6CLT@ZF9(Y]76$3T(]3U0IY.png'}
]
}

tornado 添加请求头进行允许跨域的更多相关文章

  1. Tornado—添加请求头允许跨域请求访问

    跨域请求访问 如果是前后端分离,那就肯定会遇到cros跨域请求难题,可以设置一个BaseHandler,然后继承即可. class BaseHandler(tornado.web.RequestHan ...

  2. C#API解决自定义请求头下的跨域问题

    解决方法一: public class CrosHandler : DelegatingHandler { private const string Origin = "Origin&quo ...

  3. javascript 跨域请求详细分析(终极跨域解决办法)

    自从我接触前端以来,接手的项目里面很大部分都是前后端分离的,后端只提供接口,前端根据后端接口渲染出实际页面.个人觉得这是一个挺好的模式,前后端各自负责各自的模块,分工明确,而且也给前端更大的发挥空间. ...

  4. 通过设置P3P头来实现跨域访问COOKIE

    通过设置P3P头来实现跨域访问COOKIE 实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能. 我只写一个大 ...

  5. Ajax请求WCF服务以及跨域的问题解决

    Ajax请求WCF服务以及跨域的问题解决 这两天准备重构一下项目,准备用纯html+js做前台,然后通过ajax+WCF的方式来传递数据,所以就先研究了一下ajax访问的wcf的问题,还想到还折腾了一 ...

  6. urllib2 post请求方式,带cookie,添加请求头

    #encoding = utf-8 import urllib2import urllib url = 'http://httpbin.org/post'data={"name": ...

  7. springcloud- FeginClient 调用统一拦截添加请求头 RequestInterceptor ,被调用服务获取请求头

    使用场景: 在springcloud中通过Fegin调用远端RestApi的时候,经常需要传递一些参数信息到被调用服务中去,比如从A服务调用B服务的时候, 需要将当前用户信息传递到B调用的服务中去,我 ...

  8. iOS UIWebview添加请求头的两种方式

    1.在UIWebviewDelegate的方法中拦截request,设置request的请求头,废话不多说看代码: - (BOOL)webView:(UIWebView *)webView shoul ...

  9. WKWebView单个界面添加请求头

    https://www.jianshu.com/p/14b9ea4bf1d4 https://github.com/Yeatse/NSURLProtocol-WebKitSupport/blob/ma ...

随机推荐

  1. 基于express框架的Token实现方案

    什么是Token? 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思.一般我们所说的的token大多是指用于身份验证的token Token的特点 随机性 不可预测性 时效性 无状态. ...

  2. 在 Yosemite 装 Jave 的方法. ( 适用于 OS X 10.10 )

    因为并非所有用户都用得着 Java ,所以在默认状态下 OS X 不预装 Java , 如果你需要的话可以手动安装. 1. http://support.apple.com/kb/DL1572到苹果官 ...

  3. slack机器人运维

    这里有一篇文章,够详细了:http://colobu.com/2015/11/04/create-a-slack-bot-with-golang/ 另外:这个py的库,test了一下,挺好使:http ...

  4. 【C/C++】程序如何来,编译全过程

    概述    编译的目的是把人书写的高级语言代码翻译成目标程序的语言处理程序,编译用的程序(例如gcc)称为编译系统. 一个编译系统把一个源程序翻译成目标程序的工作过程分为5个阶段:词法分析.语法分析. ...

  5. Asp.Net MVC绑定DropDownList等控件

    测试环境:vs2013..Net4.5.mvc5 一.Asp.Net MVC绑定控件原理说明 以Html.TextBox为例 /// <param name="name"&g ...

  6. Java获取某个月的天数

    https://blog.csdn.net/wtopps/article/details/48262221 ********************************************** ...

  7. Hadoop守护进程【简--】

    [转自]http://blog.sina.com.cn/s/blog_81e6c30b01019po3.html 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程. 一般如果正常 ...

  8. 常用的 Linux iptables 规则

    一些常用的 Linux iptables 规则,请根据自己的具体需要再修改. 转载自:http://mp.weixin.qq.com/s/uAPzh9_D4Qk6a3zBh7Jq5A # 1. 删除所 ...

  9. maven 引入仓库外部jar

    <dependency> <groupId>cn.com.do1</groupId> <artifactId>dqdp-template</art ...

  10. C#学习笔记(8)——委托应用(显示,写入时间)

    说明(2017-5-30 09:08:10): 1. 定义一个委托,public delegate void MyDel();无参数,无返回值. 2. 委托作为DoSth的参数,DoSth里面调用委托 ...