我已经苦恼了相当长一段时间。我原以为问题已经解决了,但是它又再次出现了。
以下是我的本地主机上的问题:
我正在尝试从客户端向我的Sinatra应用程序发出请求。我的客户端代码如下:
在我的Sinatra应用程序中,我努力启用了CORS。我尝试了以下两种方法:
即使在我的Apache Passenger虚拟主机中,我也进行了以下添加。
这真是让人头疼。如果有人能提供指导,关于为什么CORS无法工作,将不胜感激。
以下是我的本地主机上的问题:
OPTIONS http://my.server.com/authorize Origin http://localhost is not allowed by Access-Control-Allow-Origin. jquery-1.8.2.min.js:2
XMLHttpRequest cannot load http://my.server.com/authorize. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
我正在尝试从客户端向我的Sinatra应用程序发出请求。我的客户端代码如下:
function authorize(token)
{
$.ajax({
url: "http://my.server.com/authorize/authorize",
crossDomain: "true",
jsonp: "false",
async: true,
headers: {"Authorization" : token},
success: function(data){
console.log("success");
window.location = (envHost+"/fb/authenticate");
}
});
}
在我的Sinatra应用程序中,我努力启用了CORS。我尝试了以下两种方法:
options '/*' do
headers['Access-Control-Allow-Origin'] = "*"
headers['Access-Control-Allow-Methods'] = "GET, POST, PUT, DELETE, OPTIONS"
headers['Access-Control-Allow-Headers'] ="accept, authorization, origin"
end
并且
before do
headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS'
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Headers'] = 'accept, authorization, origin'
end
即使在我的Apache Passenger虚拟主机中,我也进行了以下添加。
<Directory /var/Developer/MySite/public>
Options -MultiViews
AllowOverride All
Allow from all
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers: "accept, authorization, origin"
</Directory>
这真是让人头疼。如果有人能提供指导,关于为什么CORS无法工作,将不胜感激。
jsonp: false
或者async: true
(默认为true),甚至是crossdomain: true
(如果是跨域请求,默认为true)。你在所有浏览器中得到了相同的结果吗? - Kevin B