機械翻訳について

Cross-Origin Resource Sharing (CORS)

CORSは、クロスオリジン・リクエストを許可するどうかを安全に決定するためにブラウザとサーバーが対話する方法を定義します。 CORSは、同一オリジン・リクエストよりも柔軟性を提供しますが、すべてのクロスオリジン・リクエストを許可するよりも安全です。

Oracle Integrationは、「RESTアダプタ」トリガー(インバウンド)方向のCORSをサポートします。 CORSサポートは、アダプタ・エンドポイント構成ウィザードで構成します。 「RESTアダプタのトリガー・リソース構成ページ」「RESTアダプタ・トリガーCORS構成ページ」を参照してください。

CORSは、次のレイアウト・エンジンをベースとするブラウザでサポートされています。
  • BlinkおよびChromiumをベースとするブラウザ(Chrome 28、Opera 15、Amazon Silk、Android 4.4+ WebView、およびQt WebEngine)。

  • Gecko 1.9.1 (Firefox 3.5、SeaMonkey 2.0、およびCamino 2.1)およびそれ以降。

  • MSHTML/Trident 6.0 (Internet Explorer 10)は、ネイティブ・サポートを提供します。 MSHTML/Trident 4.0および5.0 (Internet Explorer 8および9)は、XDomainRequestオブジェクトを介して部分的なサポートを提供します。

  • Prestoベースのブラウザ(Opera)は、Opera 12.00およびOpera Mobile 12(Opera Miniは除く)の時点でCORSを実装しています。

  • WebKit (Safari 4以降、Google Chrome 3以降、場合によってはそれより前)。

次のブラウザはCORSをサポートしていません。
  • Caminoは2.0にCORSを実装していません。xリリース・シリーズはGecko 1.9.0に基づいているためです。

  • バージョン0.10.2の時点で、AroraはWebKitのCORS関連APIを公開しますが、クロス・オリジン・リクエストの試行は失敗します。[16]。

CORSが機能するには、OPTIONSリクエストを送信する必要があります。 Javascript for (Ajax呼び出し)のXMLHttpRequestオブジェクトを使用すると、自動的にOPTIONSリクエストが送信されます。 XMLHttpRequestが使用されない場合は、OPTIONSリクエストを明示的に送信する必要があります。

次の例では、HTMLクライアントがXMLHttpRequestを使用してCORSベースのエンドポイントOracle Integrationを起動します。
<html>

<script language="javascript">

var invocation = new XMLHttpRequest(); 
var url =
"<ics endpoint url>";
// Use postman to generate authCode. Sample is provided below 
var authCode = 'Basic <base64encoded authorization string>';  

function callOtherDomain(){   if(invocation)     {       
invocation.open('GET', url, true);       
invocation.setRequestHeader('Accept', 'application/json'); 
invocation.setRequestHeader('X-Cache','aaa');   
invocation.setRequestHeader('X-Forwarded-For','fwd1'); 
invocation.setRequestHeader('Authorization',authCode); 
invocation.onreadystatechange = stateChangeEventHandler; 
invocation.send(); 
} 
} 

function stateChangeEventHandler() 
{ 
//  check whether the data is loaded 
if (invocation.readyState==4)  
 {  // check whether the status is ok   
  if (invocation.status==200)   {   
  //alert(invocation.responseText) 
document.getElementById("myTextarea").value = invocation.responseText 
document.write("hello"); 
document.write(invocation.responseText);   
  }  
  else  
  {  
    alert ("Error Occurred")  
  }   
   } 
}

</script>
<body onload="callOtherDomain()">
<br><br>
<textarea id="myTextarea" name="mytextarea1"></textarea><br><br>
</body>
</html>
一部のブラウザには、CORSを使用できない同じ起点ポリシーまたは類似の名前などのセキュリティ制限がある場合があります。 たとえば、Chromeブラウザを使用してCORS対応エンドポイントにアクセスするには、次のようにwebセキュリティを無効にして起動する必要がある場合があります。
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security