CORS 문제가 발생했습니다. 서버 프록시를 사용하여 처리하려고합니다. 가장 신뢰할 수있는 처리 방법 인 것처럼 보입니다. 하지만 POST 요청으로 주요 문제가 발생합니다.JSON 내용으로 HTTP POST를 프록시 처리합니다.
프록시의 일반적인 구조는 다음과 같습니다 JQuery-based client -> WebServer HttpHandler Proxy -> WebAPI Service
클라이언트는 JSON 페이로드를 사용하고 대가를 기대하고있다.
예 클라이언트 : 우리는뿐만 아니라 amplify.js를 사용
ourcompany.datasource.postData({
data: ko.toJSON(requestObject),
success: function (response, status) { ourcompany.messenger.success('Thanks for the data!');},
error: function() { ourcompany.messenger.fail('Oh no!'); }
}
, 단지 객체의 기초가되는 JQuery와 주위에 약간의 래퍼를 추가합니다.
amplify.request.define('postData', 'ajax', {
url: buildProxyUrl(outCompany.urls.svcData),
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
beforeSend: addCustomHeaders,
decoder: wrapperDecoder
});
예 webapi :
[HttpPost]
public HttpResponseMessage PostData(PostDataRequest request)
{
HttpResponseMessage response = null;
var response = BusinessLayer.DoSomeStuff(request);
return response;
}
이 모든 비 - 프록시 상황에서 잘 작동 완성도를 들어, 다음은 jquery.ajax 매개 변수의 나머지에있는 요청의 정의입니다. 보시다시피 WebAPI 측에서 일부 JSON을 비 직렬화하여 복잡한 .NET 객체를 만듭니다.
프록시가이 모든 것을 고치고 있습니다. 본질적으로, 나는 전송에 의해 엉망이되지 않고 두 번째 요청에 따라 원래 요청의 JSON 콘텐츠를 보내는 방법을 알 수 없습니다. 나는이 내용을 추출하고 나가는 요청에 밀어 여러 가지 다른 방법을 시도했습니다
private void MakeHttpPostRequest(HttpContext context)
{
var url = context.Request["url"];
var req = WebRequest.Create(url);
req.Method = "POST";
req.Headers["x-customheader"] = context.Request.Headers["x-customheader"];
var reqStream = req.GetRequestStream();
context.Request.InputStream.Position = 0;
context.Request.InputStream.CopyTo(reqStream);
reqStream.Close();
context.Request.InputStream.Close();
using (var stream = req.GetResponse().GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
var content = reader.ReadToEnd();
context.Response.ContentType = "application/json";
context.Response.Write(content);
}
}
}
, 아무것도 작동하는 것 같다 없습니다 : 현재 코드는 다음과 같습니다. 최상의 경우 WebAPI 메서드는 요청 개체에 대해 null 값을 사용하여 호출됩니다. 나는이 시점에서 어디로 가야할지 모른다.
와우, 예, ContentType 일뿐입니다. 또한 전체 프로세스를 처리하는 데 훨씬 깨끗한 방법이며, 매우 잘 수행됩니다. 나는 당신에게 2 + 1을 줄 수 있었으면 좋겠지 만, 다른 사람들이 그것을 제공하기를 희망한다. – CodexArcanum