我们将Ruby 2.1.2与Rails 3.2.14一起使用。我们将站点移动到 SSL 后,我们在浏览器控制台上收到以下错误,用于 ajax 请求。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://sitename.com/xxx/xx?id=xx. This can be fixed by moving the resource to the same domain or enabling CORS.
我们尝试添加
headers: { 'Access-Control-Allow-Origin': '*' },
crossDomain: true
但没有效果。这是 ajax 代码:
$.ajax({
type: "GET",
data: {id: id},
url: path+id,
headers: { 'Access-Control-Allow-Origin': '*' },
crossDomain: true,
success: function(data) { }
});
还有其他建议吗??
您必须在服务器端设置标头。不在客户端上。最简单的方法是在应用程序控制器中使用类似的东西:
after_filter :set_access_control_headers
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
end
亚历山大的回答是正确的。但是,不建议允许所有域访问您的 api(除非它是公开的) 请参阅 OWASP 备忘单的 CORS 部分
轨道 5 实现
after_action :set_access_control_headers
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = 'mysite.example.com'
end