홈>
잘 작동하는 것처럼 보이는 자체 호스팅 WEB API가 있습니다. 아래는 짧은 구현입니다.
class Program
{
static void Main(string[] args)
{
string baseAddress = "http://localhost:9000/";
// Start OWIN host
using (Microsoft.Owin.Hosting.WebApp.Start<Startup>(url: baseAddress))
{
Console.ReadLine();
}
}
}
class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
public class Product
{
public string Name { get; set; }
}
public class ValuesController : ApiController
{
Product myPro = new Product { Name = "Test 123" };
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public IHttpActionResult Get(int id)
{
return Ok(myPro);
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
웹 브라우저에서 " http : // localhost : 9000/"주소에 액세스하여 올바른 라우팅 매개 변수가 예상되는 결과를 얻습니다.
그런 다음 다음 웹 페이지를 추가했습니다 :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2/jquery.min.js"></script>
<script>
var uri = 'http://localhost:9000/api/values';
function formatItem(item) {
return item.Name;
}
function find() {
var id = $('#prodId').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
$('#product').text(data.Name);
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
</script>
</head>
<body>
<div>
<input type="text" id="prodId" size="5" />
<input type="button" value="Search" onclick="find();" />
<p id="product" />
</div>
</body>
</html>
내 로컬 IIS 서버에서이 페이지를 " http : // localhost : 9998/".
자체 호스팅 WEB API를 시작한 다음 웹 페이지에서 "검색"버튼을 클릭하면 Get 액션이 호출되지만 웹 페이지에서 "Test 123"결과를 보는 대신 항상 " 다른 세부 정보가없는 오류 "메시지가 표시됩니다.
웹 페이지에 문제가 있습니까, jquery가 데이터를 가져 오는 방법 또는 구성해야 할 것이 있습니까?
이것은 모두 내 코드이며 다른 구성은 수행되지 않았습니다.
- 답변 # 1
관련 자료
- reactjs - 오류 - 응답 실패 : 수신 된 상태 코드 400
- sqlite 데이터베이스에서 datetime을 읽는 Econverter 오류
- python - 파일에서 읽을 때 Pandas Key 오류가 발생합니까?
- spring - Vault 오류, 서버가 HTTPS 클라이언트에 HTTP 응답을 제공했습니다
- python - django rest framework - 응답이 정의되지 않았습니다 오류
- docker - 데몬의 오류 응답 : get https://registry-1dockerio/v2/ : proxyconnect tcp : eof
- php - 1st Curl의 응답 헤더에서 2nd Curl에서 $url을 사용하는 동안 오류가 발생했지만 URL 작성은 수동으로 작동합니다
- Kotlin을 사용하여 Android SQLite 데이터베이스 읽기 오류
- sftp - Python에서 Paramiko를 사용하여 포트 443에 연결할 때 "SSH 프로토콜 배너 읽기 오류"발생
- javascript - axios 응답 오류를 axios 저장소에 저장하고 구성 요소 내에서 처리하는 것이 좋은 방법입니까?
- python 3.x - JSON 파일을 읽을 때 디코딩 오류 받기
- python - 대용량 파일을 읽을 때 스크립트가 PermissionError [오류 13]로 종료됩니다
- php - laravel - header ()를 사용할 때 응답 오류를 일으키는 cors 미들웨어
- android - gradle 오류 - 서버에서 http 응답 코드 : 403 url : http://servicesgradleorg/distributions/gradle-221-allzip을 반환했습니다
관련 질문
- c#에서 URL 분할?
- c# 항목이 없으면 foreach 루프 건너 뛰기
- c# : Html을 일반 텍스트로 어떻게 변환합니까?
- c# : Google API v3 asp.net 웹 양식을 사용하여 파일 업로드
- c# : ASP.net 응용 프로그램의 Security.System.Exception
- javascript : ASP.net 텍스트 상자에서 위쪽 및 아래쪽 화살표 키를 사용할 수 있습니까?
- c# : 게시 후 로그인을 묻는 Google 드라이브 v2
- c# : 입력 문자열은 올바른 형식이 아닙니다.
- 월과 연도를 제공하는 첫 번째 주 번호를 얻는 방법 c#
- c# : 열의 IDENTITY 속성을 변경합니다. 열을 삭제하고 다시 만들어야합니다.
다른 포트는 다른 출처를 의미합니다. 웹 서버에서 API에 액세스 할 수 없습니다.
https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
응용 프로그램 ore cors 헤더의 리버스 프록시 또는 호스트 API 및 웹 사이트가 필요합니다.
IIS에는 리버스 프록시 모듈이 있습니다 : https://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis