js跨域访问,No ‘Access-Control-Allow-Origin‘ header is present on
2016-04-22 13:37
423 查看
js跨域访问,No ‘Access-Control-Allow-Origin‘ header is present on
在本地用ajax跨域访问请求时报错:XMLHttpRequest cannot loadhttp://www.zjblogs.com/.
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
查了一翻资料,发现原来是新W3C标准中是这样规定的:
最新的W3C标准里是这么实现HTTP跨域请求的, Cross-Origin Resource Sharing
简单的来说,就是跨域的目标服务器要返回一系列的Headers,通过这些Headers来控制是否同意跨域。这些Headers有:4
Syntax
4.1
Access-Control-Allow-OriginHTTP
Response Header
4.2
Access-Control-Max-AgeHTTP
Response Header
4.3
Access-Control-Allow-CredentialsHTTP
Response Header
4.4
Access-Control-Allow-MethodsHTTP
Response Header
4.5
Access-Control-Allow-HeadersHTTP
Response Header
4.6
OriginHTTP
Request Header
4.7
Access-Control-Request-MethodHTTP
Request Header
4.8
Access-Control-Request-HeadersHTTP
Request Header
在 Request 包和 Response 包中都有一些。
其中最敏感的就是 Access-Control-Allow-Origin 这个 Header, 他是W3C标准里用来检查该跨域请求是否可以被通过。 (Access
Control Check)
跨域实现的过程大致如下:
从 http://www.a.com/test.html 发起一个跨域请求,
请求的地址为: http://www.b.com/test.php
如果 服务器B返回一个如下的header
Access-Control-Allow-Origin: http://www.a.com
那么,这个来自 http://www.a.com/test.html 的跨域请求就会被通过。
如上所知,总结解决办法如下:
1、如果请求的url是aspx页面,则需要在aspx页面中添加代码:Response.AddHeader("Access-Control-Allow-Origin", "*");
2、如果请求的url是PHP页面,则需要在PHP页面中添加代码:header("Access-Control-Allow-Origin: *");
3、如果请求的url是静态的html页面,则需要在页面中添加meta标签代码:<meta http-equiv="Access-Control-Allow-Origin" content="*" />
如果服务器端可以确定是要被哪些域名访问,最好是能把以上代码中的“*”代替为具体的域名,这样做可以相应的增强安全性。
转自: http://zjblogs.com/js/Access-Control-Allow-Origin.html
相关文章推荐
- js数组操作大全
- JavaScript的模块化:封装(闭包),继承(原型) 介绍
- js 【大犀牛笔记】数据类型篇 --转自慕课网
- FastJson中@JSONField注解使用
- EF linq多表查询统计demo
- javascript 的 继承(一) 之 原型链继承
- javascript设计模式介绍(七)稳妥构造函数模式
- javascript设计模式介绍(六)寄生构造函数模式
- 使用JS写当前系统时间,星期脚本,每分钟刷新
- C# web api返回类型设置为json的两种方法
- 向页面动态添加外部js
- js清除浏览器缓存的几种方法
- javascript设计模式介绍(四)组合使用构造函数模式和原型模式
- JavaScript变量作用域和内存
- struct2json -- C结构体与 JSON 快速互转库V1.0发布
- JavaScript43种常见的浏览器兼容性问题大汇总
- phantomjs#0基础
- 用Base64.min.js对数据进行加密
- javascript基础六 (DOM优化)
- servlert生成session传到jsp,servlert从jsp页面获取session的值