javascript - 跨域怎么通过POST方式传数据
阿神
阿神 2017-04-10 15:35:55
[JavaScript讨论组]

跨域怎么通过POST方式传数据

阿神
阿神

闭关修行中......

全部回复(15)
怪我咯

Cross-Origin Resource Sharing 跨域资源共享

Cross-Origin Resource Sharing,跨域资源共享,简称 CORS。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。跨域资源共享是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。

简言之,CORS就是为了让AJAX可以实现可控的跨域访问而生的。

由于有同源策略,跨域请求是被禁止。

我们需要在服务器端设置允许不同域的请求。

Apache配置方法

Apache需要使用mod_headers模块来激活HTTP头的设置,它默认是激活的。你只需要在Apache配置文件的<Directory><Location><Files><VirtualHost>的配置里加入以下内容即可

Header set Access-Control-Allow-Origin *  

PHP配置方法

header("Access-Control-Allow-Origin:*");

以上的配置的含义是允许任何域发起的请求都可以获取当前服务器的数据。当然,这样有很大的危险性,恶意站点可能通过XSS攻击我们的服务器。所以我们应该尽量有针对性地设置安全的来源,例如下面的设置使得只有http://www.shihj.com这个域才能跨域访问服务器的API。

header("Access-Control-Allow-Origin:http://www.shihj.com");

对于通配符*,它可以直接Access-Control-Allow-Origin:*这样使用,但它是不允许通配子域名的,如:Access-Control-Allow-Origin:*.shihj.com

PHPz

nginx转代为同域名才是最终解决办法,CORS的一个致命的缺点就是AJAX不会把cookie中session id也发过去,于是很多事情干不了。

天蓬老师

js的安全策略里有提到为了安全考虑,在js代码中不能对其他域名的js脚本进行调用,跨域一般用jsonp. jquery的$.ajax的jsonp 是get方式。 原理就是动态引入script标签,而script标签的src是可以跨域的,指定一个服务端的程序url,比方是一PHP文件, 在PHP文件里输出你本地函数的调用.

PHP中文网

如上所说 jsonpget 方式

有一个思路是 先发送到同域名的某个方法下 如www.a.com/a.php之后通过 a.php 文件 CURL 到接口文件请求数据

阿神

jsonp是get
可以试试cros

PHP中文网

jsonpget请求
可参考这篇文章 http://p.io/topic/1103

怪我咯

为啥不用nginx直接做一个转发?性能好,还能监控,还能控制行为。

大家讲道理

AJAX中XMLHttpRequest(XHR)受浏览器同源策略限制,要解除限制,可以设置CORS头(Access-Control-Allow-Origin)或者使用GET实现的JSONP.

值得注意的是,直接通过FORM表单提交的POST/GET请求并不会被浏览器同源策略限制,这也是为什么要设置csrf_token防范CSRF攻击.

大家讲道理

跨域访问使用JSONP,是支持JSON格式的非官方跨域交互协议,很好用
下面展示一个使用JSONP协议访问豆瓣API,并渲染页面的过程

$.ajax({
url:'https://api.douban.com/v2/movie/subject/'+movie_id;
cache:true,
type:get, //你可以换成post,这个看接口
jsonp:'callback',
crossDomain:true,
success:function(data){
$('#inputTitle').val(data.title);//用获取到的对象属性给文本框赋值
}
})

巴扎黑

没懂,POST不本来就是跨域的吧,用表单提交不行吗?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号