Mod note:这个问题是关于为什么浏览器上的XMLHttpRequest/fetch/etc受到相同的访问策略限制(您会看到提到CORB或CORS的错误),而Postman没有.这个问题是关于如何修复"不允许访问控制允许源"错误这是关于它们为什么会发生.

Please stop posting:


我试图通过连接RESTful API内置Flask来使用JavaScript进行授权.然而,当我提出请求时,我得到了以下错误:

无法加载XMLHttpRequesthttp://myApiUrl/login.请求的资源上不存在"Access Control Allow Origin"标头.因此,不允许访问源"null".

我知道API或远程资源必须设置头,但当我通过Chrome extension 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);
  });

推荐答案

如果我理解正确的话,您正在做XMLHttpRequest到一个不同的域,而不是您的页面所在的域.因此,浏览器会阻止它,因为出于安全原因,它通常会允许同一来源的请求.当您想要处理跨域请求时,您需要做一些不同的事情.关于如何实现这一点的教程是101.

当你使用postman 时,他们不受此政策的限制.引自100:

常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到同源策略的限制.扩展并没有那么有限.扩展可以与其源站之外的远程服务器进行通信,只要它首先请求跨源权限.

Javascript相关问答推荐

使用ReactJS对Ant Design表中的空值进行排序

我想做一个程序,计算字符串中所有单词的数量

创建私有JS出口

用相器进行向内碰撞检测

一次仅播放一个音频

React:未调用useState变量在调试器的事件处理程序中不可用

传递一个大对象以在Express布局中呈现

yarn安装一个本地npm包,以便本地包使用main项目的node_modules(ckeditor-duplicated-modules错误)

在grafana情节,避免冲突的情节和传说

显示图—如何在图例项上添加删除线效果?

无法访问Vue 3深度监视器中对象数组的特定对象值'

PDF工具包阿拉伯字体的反转数字

本地库中的chartjs-4.4.2和chartjs-plugin-注解

第三方包不需要NODE_MODULES文件夹就可以工作吗?

回溯替代方式

Reaction useState和useLoaderData的组合使用引发无限循环错误

使用createBrowserRoutVS BrowserRouter的Reaction路由

按特定顺序将4个数组组合在一起,按ID分组

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

TypeORM QueryBuilder限制联接到一条记录