2017-07-28 5 views
1

静的なHTMLページにトラフィックを記録するためのすばやくかわいいスクリプトを作成しています。私はAPIをホストしている別のサーバーにPOSTを行っています。サーバがCORSが有効になっています(以下のコードを参照してください)私はまだ405CORSは有効になっていますが、まだ405を取得します。

<add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="*" /> 
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, PATCH, DELETE, OPTIONS" /> 

は、ここに私のJavaScriptのget:ここ

var host = window.location.host; 
    var hostname = window.location.hostname; 
    var href = window.location.href; 
    var port = window.location.port; 
    var path = window.location.pathname; 
    var referrer = document.referrer; 

    var obj = { 
    Host: host, 
    HostName: hostname, 
    Href: href, 
    Port: port, 
    Path: path, 
    Referrer: referrer 
    }; 

    $.ajax({ 
    type: 'POST', 
    url: 'http://localhost/system/api/sp/logvisit', 
    data: obj, 
    dataType: 'json', 
    contentType: 'application/json' 
    }); 

は私のコントローラです:

namespace Gs.Api 
{ 
    public class SPController : ApiController 
    { 
     [Route("api/sp/logvisit")] 
     [HttpPost] 
     public void LogVisit(LogVisitRequest request) 
     { 
      // do stuff with request 
     } 
    } 
} 

私が試しましたここでの主な答えはHandling CORS Preflight requests to ASP.NET MVC actionsですが、これは405を取り除きましたが、私の方法は実際には呼ばれませんでした。私はここでさまざまな答えからいくつかの他の修正を試して、いくつかはエラーを取り除いたが、投稿されたオブジェクトはnullになる。

+0

に、data: objを変更しました。 – 11thdimension

+0

@ 11thdensionメソッドは、ARC(Advanced REST Client - Chrome App Storeから) – Timothy

+0

を使用して正常に動作します。RESTクライアントはCORSにバインドされていません.Ajaxを試してみてください。 – 11thdimension

答えて

1

私はこれを自分で考え出しました。私は他のいくつかのソリューションを取って一緒に使う必要がありましたが、ついにそれを得ました。

  1. 私はこの答えを使用:https://stackoverflow.com/a/13646169/3920075
  2. 私は<add name="Access-Control-Allow-Headers" value="Content-Type" /><add name="Access-Control-Allow-Headers" value="*" />を変更しました。
  3. 私はあなたが同じ起源からメソッドを呼び出すことができることを確認しdata: JSON.stringify(obj)
関連する問題