3

我正在尝试在我的反应应用程序中实现共享点文件浏览器。使用microsoft/file-browser这个ans代码如下。但是得到xxx... from origin 'http://localhost:3000' has been blocked by CORS policy

任何想法如何为此启用CORS

import * as React from "react";

import { GraphFileBrowser } from '@microsoft/file-browser';

class App extends React.Component {


  getAuthenticationToken() {
    return new Promise<string>(resolve => {
      resolve(
        "VALID TOKEN"
      );
    });
  }

  render() {
    return (
      <GraphFileBrowser
        getAuthenticationToken={this.getAuthenticationToken}
        onSuccess={(selectedKeys: any[]) => console.log(selectedKeys)}
        onCancel={(err: Error) => console.log(err.message)}
        endpoint='https://XXX.sharepoint.com'

      />
    );
  }
}

export default App;
4

3 回答 3

3

据我所知,CORS 错误不是因为 SharePoint 而发生,而是因为您的浏览器。这里的问题是您正在尝试将资源从 xxx.sharepoint.com 加载到 localhost(默认情况下从未添加为 CORS 中接受的内容)

因此,一种解决方案是使用对 CORS 不敏感的浏览器。这可能是以下内容:

cd "C:\Program Files (x86)\Google\Chrome\Application"
chrome.exe --disable-web-security --user-data-dir="C:\tmp"

此代码段使用用户数据目录“C:\tmp”启动没有“网络安全”(包括 CORS)的 Google Chrome。

请记住,此解决方法仅适用于开发。在生产中,您不应该使用 localhost...

https://www.thepolyglotdeveloper.com/2014/08/bypass-cors-errors-testing-apis-locally/

于 2019-09-16T10:51:13.563 回答
1

您正在访问的 Web 应用程序支持(或不支持)CORS。以前版本的 SharePoint 几乎没有或没有 CORS 支持。

SharePoint 2016 及更高版本要求您对所有 CORS 调用使用 OAuth。这可以使用低/高信任加载项令牌或 AAD 应用程序令牌来完成。SharePoint 识别的任何有效 OAuth 令牌都可以使用。这是一个广泛的主题,但您可以在此处阅读加载项身份验证 - SharePoint 加载项的授权和身份验证

在以前的 SharePoint 版本(2013 和更早版本)中,您可以使用 IIS 中的 URL 重写规则或响应标头来伪造当时 SharePoint 中缺乏的 CORS 支持。现在它支持它,你不能伪造它,它需要身份验证。

此处的更多信息 - 修复对 SharePoint 进行跨域 ajax 调用时出现的问题 rest

于 2021-01-28T01:29:33.513 回答
-1

默认情况下(在 JavaScript API 中),跨源资源共享在现代浏览器中被阻止。

您的生产服务器必须启用 CORS才能处理来自不同域的 Web 应用程序中的跨域 Ajax 请求。但是,如果您只需要绕过它进行开发,请尝试使用Allow CORS: Access-Control-Allow-Origin chrome 扩展,它可以让您启用/禁用 CORS 检查。

于 2019-09-22T12:20:53.490 回答