Chrome Origin null不被Access-Control-Allow-Origin允许。

4
我看到许多其他人在这里询问关于来源不允许的问题,现在我已经尝试添加--Access-Control-Allow-Origin并启用应用程序,甚至禁用了安全性,但每次我在php页面上尝试按我的按钮时,它都会持续报错。
Origin null is not allowed by Access-Control-Allow-Origin.

有人能帮我吗?这里是导致问题的代码:

page.php

<html land="en">
<head>
    <meta carset="utf-8">
    <link rel="stylesheet" type="text/css" href="style.css";
</head>

<body>
<!-- Document Ready Event -->
<input id="text" type="text" /><input id="submit" type="button" value="Submit" />

<div id="feedback"></div>
    <script src="../jquery-1.10.2.min.js"></script>
    <script src="script.js"></script>
</body>
</html>

Script.js

$('#submit').click( function()
{
var text = $('#text').val();

$.get( 'PHP/reverse.php', { input: text }, function( data )
    {
        $('#feedback').text( data );
    });
});

你在 MS IIS Web 服务器上运行 PHP 吗? - BlitZ
我从本地机器运行所有脚本。 - Canvas
@Canvas - 你在本地机器上运行什么HTTP服务器软件? - Quentin
我正在使用XAMPP,并将我的PHP文件放置在C:\xampp\htdocs\amit\reverse.php。我还有一个text.php,它将数字作为整个HTML + PHP文件添加到其中,并且可以正常工作,但我真的想让这个文件正常工作。 - Canvas
当您测试此内容时,您的浏览器地址栏显示的是哪个URL? - Quentin
我的HTML页面地址是file:///C:/Users/Canvas/Documents/Important/Learning/Jquery/TuT97-98/GetHTTPRequest.php。 - Canvas
3个回答

5
Origin null is not allowed by Access-Control-Allow-Origin 意味着你试图在本地文件上执行Ajax操作,由于安全原因,这是禁止的。即使不是这种情况,你的PHP也无法运行,因为PHP是由Web服务器支持的,而不是Web浏览器。
你已经安装了Web服务器。你必须通过服务器请求页面,而不是直接从文件系统访问它们。
使用以 http://localhost/ 开头的URL。
你需要移动你的文件,使它们位于服务器的DocumentRoot下(或重新配置服务器,使其可以从当前位置访问它们)。

之前,你说你正在使用 file:///C:/Users/Canvas/Documents/Important/Learning/Jquery/TuT97-98/GetHTTPRequ‌​est.php。你需要通过 HTTP 访问网页。你的代码还说了 'PHP/reverse.php',这是一个相对 URI,所以在 file:// URL 中不会映射到 localhost - Quentin
如果您使用的是HTTP URI,则不会收到关于“origin null”的投诉,因为您的来源不会是“null”。 - Quentin
1
在HTTP URI中,为了安全起见,在302重定向时,Origin将被设置为null。如果您请求资源A并被重定向到资源B,则浏览器会将Origin设置为null,以防止泄露有关原始请求的信息,例如在请求资源A时URL中可能包含敏感数据。 - rism

3
我不确定你要测试哪个浏览器。在我这个案例中,如果我从本地文件发送 AJAX 请求,也就是说 Origin 是 null,则所有浏览器都能正常工作。我猜您无法使其工作的原因是需要一些服务器端编码。
尝试添加 Access-Control-Allow-Origin 标头到 HTTP 响应,并将值设置为 *。我不确定如何在 PHP 中执行此操作,但以下是一段 Java 代码供您参考。 response.setHeader("Access-Control-Allow-Origin", "*")

-1

1
这是极其不安全的 - 它允许任何网站将请求作为您发送到任何他们想要的地方(请参见 https://dev59.com/9msz5IYBdhLWcg3w8MYb#17098221). - DaveMongoose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接