如何在 Sharepoint Online 中启用 CORS
How to enable CORS in Sharepoint Online
我正在尝试在我的 React 应用程序中实现共享点文件浏览器。使用 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;
据我所知,CORS 错误不是由 SharePoint 引起的,而是由于您的浏览器引起的。这里的问题是您正在尝试将资源从 xxx.sharepoint.com 加载到本地主机(默认情况下从未添加为 CORS 接受)
因此,一种解决方案是使用对 CORS 不敏感的浏览器。这可能是以下内容:
cd "C:\Program Files (x86)\Google\Chrome\Application"
chrome.exe --disable-web-security --user-data-dir="C:\tmp"
此代码段使用用户数据目录 "C:\tmp".
在没有 "Web Security"(包括 CORS)的情况下启动您的 Google Chrome
请记住,此解决方法仅适用于开发。在生产中你不应该使用 localhost...
https://www.thepolyglotdeveloper.com/2014/08/bypass-cors-errors-testing-apis-locally/
跨源资源共享在现代浏览器中默认被阻止(在 JavaScript API 中)。
您的生产服务器必须 CORS-enabled in order to handle cross-domain Ajax requests in web applications from a different domain. But if you just need to bypass it for development, try using Allow CORS: Access-Control-Allow-Origin chrome 扩展,让您 enable/disable CORS 检查。
您正在访问的 Web 应用程序支持(或不支持)CORS。以前版本的 SharePoint 几乎没有或没有 CORS 支持。
SharePoint 2016 及更高版本要求您在所有 CORS 调用中使用 OAuth。这可以使用 low/high 信任 add-in 令牌或 AAD 应用程序令牌来完成。 SharePoint 识别的任何有效 OAuth 令牌都可以使用。这是一个广泛的主题,但您可以在此处阅读 add-in 身份验证 -
Authorization and authentication of SharePoint Add-ins
在 SharePoint 的早期版本(2013 及之前)中,您可以使用 IIS 中的 URL re-write 规则或响应 headers 伪造 SharePoint 中缺少的 CORS 支持时间。既然支持了,那就假不了了,还需要认证。
更多信息在这里-
Fixing issue in making cross domain ajax call to SharePoint rest
我正在尝试在我的 React 应用程序中实现共享点文件浏览器。使用 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;
据我所知,CORS 错误不是由 SharePoint 引起的,而是由于您的浏览器引起的。这里的问题是您正在尝试将资源从 xxx.sharepoint.com 加载到本地主机(默认情况下从未添加为 CORS 接受)
因此,一种解决方案是使用对 CORS 不敏感的浏览器。这可能是以下内容:
cd "C:\Program Files (x86)\Google\Chrome\Application"
chrome.exe --disable-web-security --user-data-dir="C:\tmp"
此代码段使用用户数据目录 "C:\tmp".
在没有 "Web Security"(包括 CORS)的情况下启动您的 Google Chrome请记住,此解决方法仅适用于开发。在生产中你不应该使用 localhost...
https://www.thepolyglotdeveloper.com/2014/08/bypass-cors-errors-testing-apis-locally/
跨源资源共享在现代浏览器中默认被阻止(在 JavaScript API 中)。
您的生产服务器必须 CORS-enabled in order to handle cross-domain Ajax requests in web applications from a different domain. But if you just need to bypass it for development, try using Allow CORS: Access-Control-Allow-Origin chrome 扩展,让您 enable/disable CORS 检查。
您正在访问的 Web 应用程序支持(或不支持)CORS。以前版本的 SharePoint 几乎没有或没有 CORS 支持。
SharePoint 2016 及更高版本要求您在所有 CORS 调用中使用 OAuth。这可以使用 low/high 信任 add-in 令牌或 AAD 应用程序令牌来完成。 SharePoint 识别的任何有效 OAuth 令牌都可以使用。这是一个广泛的主题,但您可以在此处阅读 add-in 身份验证 - Authorization and authentication of SharePoint Add-ins
在 SharePoint 的早期版本(2013 及之前)中,您可以使用 IIS 中的 URL re-write 规则或响应 headers 伪造 SharePoint 中缺少的 CORS 支持时间。既然支持了,那就假不了了,还需要认证。
更多信息在这里- Fixing issue in making cross domain ajax call to SharePoint rest