本地跨域请求
Posted
技术标签:
【中文标题】本地跨域请求【英文标题】:Cross origin requests on local 【发布时间】:2018-09-20 20:01:46 【问题描述】:我正在尝试一些非常简单的方法,但由于某种原因它不起作用:
index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>SyriLab</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header></header>
<div id="content"></div>
<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/poper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/functions.js"></script>
<script src="js/main.js"></script>
</body>
</html>
js/main.js:
window.onload=function()
main();
function main()
$("header").load("./pages/header.html");
$("#content").load("./pages/home.html");
我在启动 index.html 时遇到的错误:
加载文件失败:///E:/Dev/Eclipse/SyriLab/pages/header.html:跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https。
加载文件失败:///E:/Dev/Eclipse/SyriLab/pages/home.html:跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https。
一切都是本地的,相同的根目录,我只是想制作一个基本的 html 页面,包括引导程序和 jquery(也是 poper,不确定它是什么,但在引导程序页面上)。并在 php 中使用类似于“include”的东西,但使用常规的 js 和 html。
我在这里做错了什么?
【问题讨论】:
错误告诉你...提示你的协议是file
...安装猫鼬。它是一个用于 Windows 的轻量级 Web 服务器,并创建一个将组成的域指向本地主机的主机。
没有别的办法了吗?我希望能够在不运行任何东西的情况下进行实验。
像这样加载外部 html 是一种非常糟糕的做法。
不,我在骗你。去安装猫鼬...这很简单。
威尔斯:那我该怎么办? Darkrum:好的,谢谢,我只是不想安装或运行任何东西,只需启动我的页面。但如果没有其他选择
【参考方案1】:
根据您的问题,您似乎正在尝试将 index.html
作为本地文件访问。取而代之的是,您必须使用网络服务器(例如 nginx、apache 等)来访问该文件。由于用于访问本地文件的协议是file://
,jQuery 的加载方法将无法加载文件。出于安全原因,浏览器禁止此类请求。
配置网络服务器并尝试使用http
协议访问index.html
,您的代码应该可以工作。
【讨论】:
【参考方案2】:正如其他人所说。您必须使用服务器提供文件。
为此目的并避免安装软件,请使用 Python。
在您的控制台中输入:
cd /path/to/my/index.html
// Below is command line for Python 3.x
python -m http.server
// Below is command line for Python 2.x
python -m SimpleHTTPServer
默认使用 http://localhost:8000/
这个简单的服务器将为您的目录文件提供服务。 Index.html 是服务器将尝试查找和服务的空资源请求。
【讨论】:
它导致/usr/bin/python: No module named http
和pip install http
给出ERROR: Could not find a version that satisfies the requirement http ERROR: No matching distribution found for http
和更早的ModuleNotFoundError: No module named 'request'
。不确定问题是由过时的答案引起的还是我对pip
做了一些奇怪的事情
@reducingactivity 快速回复。如果您使用的是 Python 2.x,则必须调用 python -m SimpleHTTPServer 将更新答案以供将来参考以上是关于本地跨域请求的主要内容,如果未能解决你的问题,请参考以下文章