微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在XAMPP上启用跨源资源共享?

我有我的本地主机上的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] 举报,一经查实,本站将立刻删除。

相关推荐