2017-02-22 22 views
0

私はREST API(sharepoint)を使用してクエリを実行していくつかの結果を得ようとしています。Sharepointを使用したCorsの問題

私は

https://www.slideshare.net/CoreyRoth/fives-ways-to-query-share-point-2013-search-sharepoint-summit-toronto-2013を始めたところ、これは、これは私が

document.getElementById("restApi") 
      .addEventListener("click", restApi, false); 
    function restApi() { 

     var queryUrl = "https://myAppDomain.org/_api/search/query?querytext='" + $("#restSearch").val() + "'"; 

     $.ajax({ 
      type: "GET", 
      url: queryUrl, 
      xhrFields: { 
       withCredentials: true 
      }, 
      headers: { 
       "Accept": "application/json; odata=verbose" 
      }, 
      success: function (data) { 
       var results = data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results; 
      }, 
      error: function (error) { 
      } 
     }); 
    } 

これが問題である持っているものである31

をスライドさせます。

XMLHttpRequestが「https://myAppDomain.org/_api/search/query?querytext=x」いいえ「アクセス制御 - 許可 - 起源」ヘッダが要求さ たリソース上に存在するロードすることはできません。したがって、オリジン 'http://localhost:63734'は許可されません。

と私はXMLHttpRequestのは https://myAppDomain.org/_api/search/query?querytext=xをロードすることはできません

取得対象のパスワードとユーザー名

headers: { 
       "Accept": "application/json; odata=verbose", 
       "password": "my password", 
       "username": "my account name" 
      }, 

を提供しようとした別の方法。 プリフライト要求に応答してアクセス制御チェックを通過しません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、オリジン 'http://localhost:63734'は許可されません。 応答は、HTTPステータスコード401

を持っていた私は私がCORSパッケージをインストールしているため、.NET WEBAPIを使用して、コンフィギュレーション

// Enabled cors 
config.EnableCors(new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true }); 

アプリだ内部にあり、私は窓を使用しています資格情報のパスとアカウント名。

、なぜ私はこのエラーを取得しています、私は間違って何をしますか?私は、検索や他のソリューションを試してみましたが、常に

いいえ「アクセス制御 - 許可 - 起源に関連した同じ問題を取得しました「ヘッダは、サーバがあなた

によって開発されている場合は、要求

+0

ヒットしようとしているコントローラメソッドを表示できますか? – Dylan

+0

コントローラにヒットしようとしていません。私はクライアントから直接リクエストしています。これはなぜ私がイベントが必要かどうかわからない理由です。私は確かにしたいと思っていたからです。 –

+0

Web APIを制御できませんか?クライアント側にCORSは必要ありません。 CORSを自分たちの側で有効にする必要があるという依頼をしてきた人は誰ですか? – Dylan

答えて

1
  1. オープンIIS
  2. 移動して、SharePointサイト
  3. 右クリックして見つける - >
  4. オープンweb.configファイル
  5. は、システム内の次のコードを追加します探ります。クロスを可能にすることにより、(私はCSOM、クライアント側ではなく、その後のREST APIを使用したかっただろうので、部分的に)はwebServerノード

    <?xml version="1.0" encoding="utf-8"?> 
        <configuration> 
         <system.webServer> 
          <httpProtocol> 
           <customHeaders> 
           <add name="Access-Control-Allow-Origin" value="*" /> 
           </customHeaders> 
          </httpProtocol> 
         </system.webServer> 
        </configuration> 
    
  6. 保存して終了は

0

上に存在するあなたが入れている 『アクセス制御 - 許可 - 起源を:localhost』を、あなたの.htaccessファイルやWebサーバの設定で?

また、サーバーからの応答にそのヘッダーを追加することもできます。サイトへ

1

私は私の問題を解決するために管理してきました私の要求をしたアプリケーション(sharepoint app)に直接、アプリケーションからのドメイン呼び出しを送信します。セクションの

web.configファイル

system.webserver/httpprotocol/customheaders

私は、次のファイルを追加しました要求されたアプリでそう

内容:

<add name="Access-Control-Allow-Origin" value="https://myApplicationDomain.zzz" /> 
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" /> 
<add name="Access-Control-Allow-Headers" value="Content-Type" /> 
<add name="Access-Control-Allow-Credentials" value="true" />