网页跨域ajax请求问题
今天用php的项目网页请求另一个服务器的rails项目的api。首先解决php项目的跨域问题。服务器是ubuntu 用的apache2。
修改文件 /etc/apache2/apache2.conf, 添加一行 Header set Access-Control-Allow-Origin "*"
<Directory /var/www/html> Order Allow,Deny Allow from all AllowOverride all Header set Access-Control-Allow-Origin "*" </Directory>
然后新增header module
a2enmod headers
之后重启apache2
/etc/init.d/apache2 restart
页面的Ajax请求改为如下,数据类型一定是jsonp
$.ajax({ type:"GET", crossDomain: true, dataType: 'jsonp', headers: { "accept": "application/json", "Access-Control-Allow-Origin":"*" }, crossDomain: true, url: 'http://localhost:3000/api/v1/parts/search_parts?keyword=xxx', success: function(data) { console.log(data) }, error: function() { alert('Failed!'); } })
最后修改rails api的返回,格式如下,data是要返回的结果。
render :json => data.to_json, :callback => params['callback']