【发布时间】:2020-03-18 10:25:39
【问题描述】:
我目前正在编写一个 php 网站,该网站从我的服务器的 json 文件中读取某些值。 现在,当我向服务器请求 xmlhttp 请求时,我在控制台中收到 Access-control-allow-origin ERROR。我已经发现我必须设置 Access-control-allow-origin: *;在我的 Apache 配置中,但我不想使用 * 因为我不想让每个人都可以访问我的网站。那么我怎样才能只为每个客户端授予一个 json 文件的权限呢?
var requestURL = 'https://myWebsite/blabla.json';
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
request.onload = function() {
var response = request.response;
jackpot = response.items[0].value;
var inner = document.getElementById("myid");
inner.innerHTML = jackpot+" EURO";
这是我的 js 代码,我总是得到错误,除了我使用 Access-control-allow-origin: *,我不想使用它,因为它没有保存。
请注意我对网络编码不太熟悉,所以我不是很专业抱歉。
【问题讨论】:
-
您必须列出允许向您的服务器 URL 发出跨域请求的 URL(在此上下文中称为“源”),而不是 *。从这些来源之一加载的任何网页都将能够发出跨域请求。 (好吧,实际上您可能还需要一些其他标头,但并不总是那么简单。The CORS documentation 可以为您提供更多信息。
-
是的,我知道,但我还不知道哪些网站会包含我的脚本,所以我需要让每个人都可以访问,但仅限于这个 json 文件,而不是我的洞网站。
-
"但仅针对这个 json 文件"...在这种情况下,您必须检测正在请求哪个 URL,并且仅在请求该 URL 时发出访问控制标头。跨度>
-
P.S. “我需要让每个人都可以访问”和“我不想使用 * 因为我不想让每个人都可以访问”直接相互矛盾。请下定决心要达到的目标。您想要授予每个人访问一个文件的权限,或者您想要授予一些站点访问一个或多个 文件。
-
那么我必须在哪里设置访问控制允许来源属性?在 php 脚本中?我目前在apache配置中设置它。但是在脚本中也可以吗?
标签: javascript php json apache server