Access-Control-Allow-Origin 不允许 Chrome Origin null
Posted
技术标签:
【中文标题】Access-Control-Allow-Origin 不允许 Chrome Origin null【英文标题】:Chrome Origin null is not allowed by Access-Control-Allow-Origin 【发布时间】:2013-09-27 12:25:14 【问题描述】:我已经准备好许多其他人在这里询问的关于起源不允许 blablabla 的帖子,
现在我尝试添加 --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 网络服务器上运行 PHP 吗? 不,我从本地机器运行所有脚本 @Canvas — 你在本地机器上运行什么 HTTP 服务器软件? 我正在使用 XAMPP,我已将我的 PHP 文件放在 C:\xampp\htdocs\amit\reverse.php 我还有一个 text.php 将数字作为一个整体添加 html + php 文件一个就行了,但我真的很想让这个工作 测试时浏览器地址栏中会显示什么网址? 【参考方案1】:Origin null is not allowed by Access-Control-Allow-Origin
表示您正在尝试对本地文件执行 Ajax。出于安全原因,这是禁止的。即使不是这种情况,您的 PHP 也不会运行,因为 Web 服务器支持 PHP,而不是 Web 浏览器。
您已经安装了网络服务器。您必须通过服务器请求您的页面,而不是直接从您的文件系统访问它们。
使用以http://localhost/
开头的网址
您需要移动文件,使其位于服务器的 DocumentRoot
下(或重新配置服务器,使其可以从当前位置访问它们)。
【讨论】:
之前,您说您使用的是file:///C:/Users/Canvas/Documents/Important/Learning/Jquery/TuT97-98/GetHTTPRequest.php
。您需要通过 HTTP 访问网页。您的代码还说 'PHP/reverse.php'
这是一个相对 URI,因此在给定 file://
URL 的情况下不会映射到 localhost
。
如果您使用的是 HTTP URI,那么您将不会收到提及 origin null 的投诉,因为您的来源不会是 null跨度>
Origin 将在 302 上设置为 null 作为 HTTP URI 中的安全措施。如果您请求资源 A 并将您重定向到资源 B,则浏览器将 Origin 设置为 null 以防止泄漏有关原始请求的信息,例如请求资源 A 时,url 中可能存在敏感数据。【参考方案2】:
我不确定您正在测试哪个浏览器。就我而言,如果我从本地文件(即Origin is null
)发送 AJAX 调用,它适用于我的所有浏览器。我猜你不能让它工作的原因是需要一些服务器端编码。
试试这个,将Access-Control-Allow-Origin
标头添加到HTTP 响应中,并将值设置为*
。我不确定如何在 PHP 中执行此操作,但这里有一段 Java 代码供您参考。
response.setHeader("Access-Control-Allow-Origin", "*")
【讨论】:
【参考方案3】:这个 chrome 插件允许从任何来源请求任何带有 ajax 的网站。添加到响应 'Allow-Control-Allow-Origin: *' 标头
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi/related
它对我有用,无需在服务器端进行任何更改。但是,如果它符合您的测试,您应该在请求中更改 withCredentials: false 。
【讨论】:
这是非常不安全的——它允许任何网站随你发送请求到他们喜欢的任何地方(见***.com/questions/7564832/…)以上是关于Access-Control-Allow-Origin 不允许 Chrome Origin null的主要内容,如果未能解决你的问题,请参考以下文章