복잡한 필터가 있는 ListData.svc, Internet Explorer, 400 잘못된 HTTP 요청,
-
10-12-2019 - |
문제
방법을 이해하는 데 문제가 있습니다. ListData.svc
IE8 및 IE9를 사용하여 디버깅할 수 있습니다.
다음과 같은 URL이 있습니다.hostname:8181/_vti_bin/listdata.svc/ImageBanners?$filter=endswith(Path,'TopLeft')
eq를 true로 표시
SharePoint 독립 실행형 서버에서 IE8을 사용하여 액세스하려고 하면 오류 400이 발생합니다.
Firefox를 사용하여 동일한 URL을 요청하면 정상적으로 작동합니다.
게다가 hostname:8181/_vti_bin/listdata.svc/ImageBanners
IE에서도 정상적으로 작동합니다.그래서 문제는 다음에 있는 것 같습니다. $filter=endswith
부분.
하지만.서버 IP 주소나 로컬 호스트를 사용하여 IE8에서 동일한 URL을 요청하면 복잡한 필터를 사용해도 올바른 결과를 얻습니다.
누구든지 이 미스터리를 밝혀줄 수 있나요?왜 이런 동작이 발생합니까?
추가 정보:
- SharePoint에는 러시아어 및 영어 버전이 설치되어 있습니다.
- SharePoint 응용 프로그램은 NTLM 인증을 사용하고 있습니다.
- IIS의 익명 인증이 비활성화되었습니다.
Fiddler는 모든 리소스가 두 번 요청된다는 것을 보여줍니다.처음에는 서버가 401을 반환하고 그 다음에는 브라우저와 URL에 따라 200 또는 400을 반환합니다(위의 세부정보 참조).
- 내가 접속할 때
ListData.svc
Firefox 올바른 HTTP 요청을 사용하는 방법은 다음과 같습니다.
수용하다:텍스트/html, 애플리케이션/xhtml+xml, /
수락 언어:en-US
사용자 에이전트:Mozilla/5.0(호환 가능;MSIE 9.0;윈도우 NT 6.1;와우64;트라이던트/5.0)
수락-인코딩:gzip, 수축
연결:살아 유지
쿠키:WSS_KeepSessionAuthenticated={b3987daa-d463-415f-8fb3-d556c27e5bbf}
주인:로컬호스트:8181
권한 부여:NTLM TlRMTVNTU...- IE8을 사용할 때 HTTP 요청은 다음과 같습니다.
lcid=1049
.어쩌면 그게 문제일 수도 있겠네요?):
수용하다:이미지/jpeg, 이미지/gif, 이미지/pjpeg, 애플리케이션/x-ms-application, 애플리케이션/xaml+xml, 애플리케이션/x-ms-xbap, /
수락 언어:en-US
사용자 에이전트:Mozilla/4.0(호환 가능;MSIE 7.0;윈도우 NT 6.1;와우64;트라이던트/5.0;SLCC2;.NET CLR 2.0.50727;.NET4.0C;.NET4.0E;.NET CLR 3.5.30729;.NET CLR 3.0.30729;InfoPath.3)
수락-인코딩:gzip, 수축
연결:살아 유지
쿠키:LCD=1049;WSS_KeepSessionAuthenticated={b3987daa-d463-415f-8fb3-d556c27e5bbf}
권한 부여:NTLM TlRMTVNTU...
주인:호스트 이름:8181- 내가 접속할 때
해결책
드디어 고정시켰습니다.이는 SharePoint REST의 기능으로 밝혀졌습니다.나는 가져갈 필요가 있었다 UI 언어 생각 해 보겠다!
예를 들어 en-us 로캘의 경우 REST 쿼리는 다음과 같아야 합니다.
?$필터=끝(길,'폴더 이름')
그러나 ru-ru에서는 다음과 같이 됩니다.
?$필터=끝(푸티,'폴더 이름')
게다가 러시아 문자를 피해야 합니다.따라서 최종적으로 다음과 같아야 합니다.
?$필터=끝(%D0%9F%D1%83%D1%82%D1%8C",'폴더 이름')
문제는 이 뿐만이 아닙니다만...제가 받은 JSON도 현지화된 것으로 나타났습니다.이는 속성이 다른 지역화된 이름.예를 들어 en-us에서 JSON을 반환했습니다.
{..."ModifiedById":1,"CopySource":null,"ApprovalStatus":"0","Path":"/Lists/ImageBanners/BottomRight"...}
루루에서:
{...."КемИзмененоId":1,"ИсточникКопии":null,"СостояниеУтверждения":"0","Путь":"/Lists/ImageBanners/BottomRight"...}
다른 언어의 속성 이름을 예측하기가 정말 어렵기 때문에 문제가 됩니다.이 정보가 누군가에게 유용한 경고가 되기를 바랍니다.