【发布时间】:2016-04-24 16:31:24
【问题描述】:
我的本地主机上有一个 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 时,我在 chrome 中收到以下错误消息
XMLHttpRequest 无法加载 http://www.example.com/projectX/lookup_update.php。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost' 不允许访问。响应的 HTTP 状态代码为 404。
据我了解,我需要使用
header("Access-Control-Allow-Origin: *");
对于 php。但是当我将它添加到 example.com/lookup_update.php 时,当 localhost 文件尝试调用它时,该文件会给出 404。
我还尝试将以下内容添加到我的 Xampp apache 配置文件中
Header set Access-Control-Allow-Origin "*"
如何从我的本地 XAMPP 设置中正确启用跨域资源??
[编辑] 这是我在本地主机上的简单表单
<!--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 文件无关,因为我正在使用它在另一个文件中进行测试
var testXHR = $.post("http://www.example.com/projectX/lookup_update.php", function (data) {
alert("success:" + data);
})
在警报弹出窗口中,我看到了预期的数据
【问题讨论】:
-
问题中的 URL 相当混乱。是
http://www.example.com/projectX/lookup_update.phpexample.com/lookup_update.php,还是http://www.example.com/projectX/index.php? -
@AlexBlex 我的意思是同一个文件,我将 index.php 重命名为 lookup_update.php。正是这个在线文件,我喜欢在本地调用它
-
您能否使用正确的文件名更新问题、添加
header的代码的sn-p 以及命令curl -v http://www.example.com/_correct_url_here -o /dev/null的输出
标签: php apache cross-domain config