我有我的本地主机上的HTML文件与窗体和处理后数据的jquery / ajax。 一个简单的PHP脚本在MysqL数据库表中查找数据
这是主要部分:
// $.post('lookup_update.PHP',$(this).serialize()) //<- local part which works $.post('http://www.example.com/projectX/lookup_update.PHP',$(this).serialize()).done(function (data) { etc.
但是,当我指向在线lookup_update.PHP我在铬中得到以下错误信息
XMLHttpRequest无法加载http://www.example.com/projectX/lookup_update.PHP 。 请求的资源上没有“Access-Control-Allow-Origin”标题。 Origin'http:// localhost '因此不被允许访问。 该响应具有HTTP状态码404。
在Apache中使用Access-Control-Allow-Origin标头处理多个域
自相矛盾的CORS错误:没有“Access-Control-Allow-Origin”出现或者“Access-Control-Allow-Origin”头包含多个值
如何configurationWAMP apache服务器以允许跨域请求ajax?
我怎样才能得到请求的起源与PHP?
据我所知,我需要使用
header("Access-Control-Allow-Origin: *");
为PHP。 但是当我将其添加到example.com/lookup_update.PHP时,当localhost文件尝试调用它时,该文件将提供一个404。
我也尝试添加以下到我的Xampp的Apacheconfiguration文件
Header set Access-Control-Allow-Origin "*"
如何从本地XAMPP设置正确启用跨源资源?
[ 编辑 ]这是我的本地主机上的简单forms
<!--Begin form--> <div id="form" class="result"> <form method="post" id="reg-form" class="form-horizontal"> <div class="controls"> <input type="text" name="code" id="code" placeholder="Code" class="form-control input-lg" /> </div> </form> </div> <!--End form-->
用下面的表单jQuery代码
<script type="text/javascript"> $(document).ready(function () { $(document).on('submit','#reg-form',function () { var tmpCode = $("#code").val(); // $.post('lookup_update.PHP',$(this).serialize()) $.post('http://www.example.com/projectX/lookup_update.PHP',$(this).serialize()) .done(function (data) { $("#reg-form").fadeOut('slow',function () { $(".result").fadeIn('slow',function () { console.log("inner test " + tmpCode); $(".result").html(data); setTimeout(function () { location.reload(); $('input').val(""); },3000); }); }); }) .fail(function () { alert('fail to submit the data'); }); return false; }); }); </script>
[ 编辑2 ]
好吧,我不认为这是与在线lookup_update.PHP文件,因为我用它来testing另一个文件
var testXHR = $.post("http://www.example.com/projectX/lookup_update.PHP",function (data) { alert("success:" + data); })
并在popup式窗口中看到预期的数据
angular js Nginx cors – 没有“Access-Control-Allow-Origin”标题
访问控制允许起源不允许起源 – 如何使用一个非常简单的networking堆栈和guice启用CORS
跨域分块上传使用CORS
飞行前OPTIONS请求故障转移HTTPS
同一域(本地主机)上的XHR跨域错误
你必须在你的lookup_update.PHP的开头写下面的代码
header('Access-Control-Allow-Origin: *'); header('Content-type: application/json');
而不是*你可以写只是IP地址。
要么
首先,你必须检查localhost或其他服务器上的问题。
试试这个代码:如果你在alert中获得一些数据,那么问题是在其他服务器上的localhost。
$.post( "test.PHP",function( data ) { alert( "Data Loaded: " + data ); });
CORS请求与预检请求“保证”。
MDN 在这里谈论它
此外,对于可能对用户数据造成副作用的HTTP请求方法(特别是对于GET以外的HTTP方法,或对于某些MIME类型的POST方法),规范要求浏览器“预检”请求,请求支持的方法从服务器使用HTTP OPTIONS请求方法,然后在从服务器“批准”时,用实际的HTTP请求方法发送实际的请求
这只是一个猜测,但是您可能正在使用框架,而您忘记为请求启用(实现)OPTIONS路由。
值得注意的是,你不应该使用通配符头(允许任何站点CORS你的服务),你应该指定一个白名单。
Access-Control-Request-Method: POST
希望这可以帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。