网页跨域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']

 

  

posted @ 2023-02-15 20:28  wangyuyu  阅读(57)  评论(0编辑  收藏  举报