@pandait
2017-05-12T14:01:58.000000Z
字数 864
阅读 1310
什么是跨域?
跨域就是因为js的同源策略的限制,比如a.com域名的js是没有办法操作b.com的下的对象,当然abc.a.com的二级域名也是不行的。
但是我们有时候需求就是需要访问或者提交数据到其它域名的站点下,这时候我们就需要跟后端进行配合来进行跨域的操作。
如何实现跨域呢?
为什么会有我们之前提供的同源策略呢?因为http是无状态的,我们没有办法去区分给我们的请求是谁,也不知道对方会对我们做些什么恶意的操作。
在我们需要从a.com发送一个POST请求到b.com,如果对方没有允许其它源发送请求,这时候我们会得到一个错误。
如代码:
$.ajax({
type: "POST",
data: postData,
url: COMAPIURL,
dataType: "jsonp",//可以json或者jsonp
success: function(result){
console.dir(result);
}
});
这时候我们就需要在服务器端请允许其它域名或者特定的域对我们发送请求。
PHP
//*星号表示允许任何域的请求,也可换为指定的域名
header('Access-Control-Allow-Origin: *');
//请求类型 GET or POST
header('Access-Control-Allow-Methods: POST');
//请求的有效期 秒为单位
header('Access-Control-Max-Age: 1000');
以就是PHP允许请求跨域访问的全部过程,更多其它其它相关内容请参考:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS#Access-Control-Max-Age