我正在创建一个重置密码页面,当我尝试通过ajax调用将数据提交到后端时,它总是返回到错误功能。当我尝试打印错误时,它没有显示任何错误。
$.ajax({
url: "php file url",
method: "GET",
data: {
"action":1,
"email":email
},
success:function(data){
},
error:function(){
close_loader();
show_snack("Problem!!! Try again later...");
}
});
它永远不会到达成功功能...我得到了-
跨源请求被阻止:同源策略禁止阅读 网址中的远程资源。 (原因:CORS标头 缺少“ Access-Control-Allow-Origin”。
答案 0 :(得分:0)
这个问题被问了好几次,但是没有人以更好的方式解释它。所以,让我告诉您问题所在,然后解决这些问题。
现在,回到您的问题。 当您使用ajax调用时,浏览器首先通过先触发OPTION请求调用来检查该请求是否被服务器接受。如果响应为200,则浏览器再次发送您的原始请求以及所有数据,否则它将失败并发送 CORS 问题。
解决方案 您可以在服务器端通过验证所有Header属性来解决它。 (推荐方法) 您也可以使用代理服务器对其进行自定义。现在,什么是代理? 这种黑客方法是将原始请求发送到代理服务器,然后代理服务器负责调用您的实际请求并取回响应。因此,您如何设置代理服务器,以及他如何了解代理服务器并由其授权。这是实际的尝试和命中方法,他在Header中添加了一些虚拟属性并尝试请求它。如果通过了,那么您就很好,否则就会失败。 (例如:在谷歌浏览器中使用CORS扩展名)
答案 1 :(得分:0)
错误正好说明了您的问题, 没有返回正确的跨域标头。
“跨域请求被阻止:同源策略禁止读取URL上的远程资源。(原因:缺少CORS标头'Access-Control-Allow-Origin')。”
当源头没有标题时,您的浏览器会假定对域的所有请求都应从外部域中阻止:
从domain.com中的javascript文件到otherdomain.com的请求将被阻止
从domain.com到www.domain.com的文件的请求也将被阻止-> CORS将它们视为不同的域。
从domain.com到domain.com的请求是允许的
要解决此问题,请在您的PHP文件中编写以下代码:
$scriptdomain = "domain-where-the-script-is.something";
header("Access-Control-Allow-Origin: $scriptdomain");
答案 2 :(得分:0)
您可以下载适用于Chrome的此工具: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en
基本上,这种情况发生在本地主机环境中,不应在真正的服务器中发生,然后您可以激活它(绿色)以允许您执行跨域请求而不会出现问题