模组注意:这个问题是关于为什么 //等。在浏览器上受相同的访问策略限制(您会收到提及 CORB 或 CORS 的错误),而 Postman 则不受约束。这个问题不是关于如何修复“没有’访问控制-允许-来源’…”错误。这是关于它们为什么会发生。
XMLHttpRequest
fetch
请停止发布:
- 适用于阳光下的每种语言/框架的 CORS 配置。而是找到您的相关语言/框架的问题。
- 允许请求规避 CORS 的第三方服务
- 用于关闭各种浏览器的 CORS 的命令行选项
我正在尝试通过连接到内置的 Flask 来使用 JavaScript 进行授权。但是,当我发出请求时,出现以下错误:
XMLHttpRequest cannot load http://myApiUrl/login.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'null' is therefore not allowed access.
我知道 API 或远程资源必须设置标头,但是当我通过 Chrome 扩展程序 Postman 发出请求时,为什么它会起作用?
这是请求代码:
$.ajax({
type: 'POST',
dataType: 'text',
url: api,
username: 'user',
password: 'pass',
crossDomain: true,
xhrFields: {
withCredentials: true,
},
})
.done(function (data) {
console.log('done');
})
.fail(function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
alert(textStatus);
});
网友回答:
警告:使用会使您的 API/网站容易受到跨站点请求伪造 (CSRF) 攻击。在使用此代码之前,请确保您了解风险。
Access-Control-Allow-Origin: *
如果您使用的是 PHP,则解决起来非常简单。只需在处理请求的 PHP 页面开头添加以下脚本:
<?php header('Access-Control-Allow-Origin: *'); ?>
如果您使用的是 Node-red,则必须通过取消注释以下行来允许文件中的 CORS:node-red/settings.js
// The following property can be used to configure cross-origin resource sharing
// in the HTTP nodes.
// See https://github.com/troygoode/node-cors#configuration-options for
// details on its contents. The following is a basic permissive set of options:
httpNodeCors: {
origin: "*",
methods: "GET,PUT,POST,DELETE"
},
如果您使用的是与问题相同的烧瓶;您必须先安装flask-cors
pip install -U flask-cors
然后将 Flask cors 包包含在您的应用程序中。
from flask_cors import CORS
一个简单的应用程序将如下所示:
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route("/")
def helloWorld():
return "Hello, cross-origin-world!"
有关更多详细信息,您可以查看 Flask 文档。
网友回答:
如果我理解正确,您正在对与您的页面所在的域不同的域执行XMLHttpRequest。因此,浏览器会阻止它,因为它通常出于安全原因允许同一来源的请求。当您想要执行跨域请求时,您需要执行一些不同操作。
当您使用邮递员时,他们不受此政策的限制。引自 Cross-Native XMLHttpRequest:
常规网页可以使用 XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受到同源策略的限制。扩展不受那么多限制。扩展可以与其源外部的远程服务器通信,只要它首先请求跨源权限。
网友回答:
因为
$.ajax({type: “POST” – 调用 OPTIONS
$.post( – 调用 POST
两者都是不同的。邮递员正确地调用“POST”,但是当我们调用它时,它将是“选项”。
对于 C# Web 服务 – Web API
请在 web.config 文件中的 <system.webServer> 标记下添加以下代码。这将起作用:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
请确保您在 Ajax 调用中没有犯任何错误。
$.ajax({
url: 'http://mysite.microsoft.sample.xyz.com/api/mycall',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
type: "POST", /* or type:"GET" or type:"PUT" */
dataType: "json",
data: {
},
success: function (result) {
console.log(result);
},
error: function () {
console.log("error");
}
});
注意:如果您正在寻找从第三方网站下载内容,那么这将对您无济于事。您可以尝试以下代码,但不能尝试 JavaScript。
System.Net.WebClient wc = new System.Net.WebClient();
string str = wc.DownloadString("http://mysite.microsoft.sample.xyz.com/api/mycall");
模板简介:该模板名称为【为什么我的 JavaScript 代码收到“请求的资源上不存在’访问控制-允许来源’标头”错误,而 Postman 没有?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。