这个问题已被问过几次并回答了,但是我试图实施建议的方法但无处可去。这是一个典型的CORS问题。除了在我的情况下,我希望能够在浏览器上使用localhost或我的PC IP。如果我的配置已设置为使用IP,则使用localhost会给出CORS错误,反之亦然。任何指导表示赞赏。 注意:请忽略我的屏幕截图和文字中的不同IP地址。
无法加载资源:服务器响应状态为405(方法不允许) localhost /:1 XMLHttpRequest无法加载http://192.168.1.2/ARES/store/1.0/core/rest/authenticate/-99/-99。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost”访问。响应的HTTP状态代码为405。
我的代码如下:我无法找到一种方法将标题正确设置为Allow-Origin。
Ext.Ajax.request({
url: url,
timeout: 2000,
cors: true,
method: 'GET',
headers: {
'Access-Control-Allow-Origin': 'http://localhost/'
},
success: function(response, options) {
Ext.getBody().unmask();
Manager.app.fireEvent('showLoginView');
},
failure: function(response, options) {
Ext.getBody().unmask();
}
});
当我在浏览器中运行它时,我看到Request Headers如下:
答案 0 :(得分:1)
或只是使用
创建chrome的快捷方式"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security
这将打开带有disable-web-security标志的chrome,您的请求将无问题或其他“OPTIONS”方法到达服务器
答案 1 :(得分:0)
跨源资源共享标准的工作原理是添加新的HTTP标头,允许服务器描述允许使用Web浏览器读取该信息的起源集。
我的重点。
您无法在客户端设置CORS标头,因为它们是抵御客户端利用的手段。任何用户都可以使用客户端代码,因此每个安全措施都必须是服务器端。
您使用的标头Access-Control-Allow-Origin
将用作HTTP响应标头,而不是请求标头。如何正确实现它的答案在很大程度上取决于所使用的后端语言/框架,你应该提出一个不同的问题。
但是,如果我正确理解你的问题,你只是在使用localhost AKA 192.168.x.y并且你只有#34;跨站点请求和#34;主机名和IP之间。使用相对URL应该是解决方案。您应该使用url:"http://localhost/ARES/store/1.0/core/rest/authenticate/-99/-99"
。
url:"http://192.168.1.2/ARES/store/1.0/core/rest/authenticate/-99/-99"
或url:"../ARES/store/1.0/core/rest/authenticate/-99/-99"
答案 2 :(得分:0)
它是在webservice端完成的:这就是我实现它的方式:以下代码进入Global.asax文件。希望它可以帮到某人。
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
//These headers are handling the "pre-flight" OPTIONS call sent by the browser
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS,PUT, DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}