2010-08-04 2 views

답변

1

그것은 행할 수 있습니다,하지만 난 그게 다소 나쁜 연습 beacuse 생각 :

  • 당신은 최종 사용자에게 웹 응용 프로그램에 대해 기술적 인 세부 사항을 많이 노출되어
  • 당신이 사용하고 확실 안전한 JSON 구문 분석 그렇지 않으면 Javascript 인젝션 공격까지 앱을 여는 것입니다.
  • 조만간
  • 귀하의 URL이

내 조언을 매우 설명하지 (http://css-tricks.com/guidelines-for-uri-design/ 참조)의 URL 문자 인코딩 문제에 충돌되어있어 : 데이터베이스에 저장된 JSON에 바인딩 state에 대한 ID를 생성 (당신의 URL의는 어느 URL의 매우 접근하게하지 않는 것이 데이터베이스 레코드 (어떤 종류의에 123 가리키는 http://host/?state=123의 라인을 따라 더 볼 것,하지만 난 여전히 때문에 인용 한 다른 포인트)에 더 나은 것 같아요.

+0

그래서 AJAX 요청을 할 경우 JSON을 게시해야합니까? 그런 다음 서버 측에서 상태를 저장하고 상태 ID를 반환해야합니까? jQuery 바베큐 : 뒤로 버튼 & 쿼리 라이브러리 (http://benalman.com/projects/jquery-bbq-plugin/)를 사용하여 URL을 'http : // host/# state = 123'으로 업데이트 할 수 있습니까? – knut

+0

아, 네. 그 부분을 잊어 버렸습니다. 어쩌면 주관적인 생각 일지 모르겠지만, JSON을 POST하는 것이 좋을 것 같습니다. 위의 플러그인은 (훑어보기에서) 깔끔한 선택처럼 보입니다. –

+0

"jQuery BBQ가 HTML5 해시 변경 이벤트를 이용하기 때문에"라이브러리에주의를 기울여야하며 모든 브라우저가 아직 HTML5를 지원하지는 않습니다. –

0

JSON 문자열을 구문 분석하여 모든 데이터를 다시 가져와야합니다. 이는 약간 복잡 할 수 있습니다. 하지만 쿼리 문자열을 자기가 사용하고 싶지 않다면 (아마 구조가 너무 복잡 할 수도 있습니다) 당신은 할 수 있습니다. 그러나 쿼리 문자열의 길이가 제한되어 있음을 기억하십시오!

0

귀하 솔루션은 괜찮습니다. 당신을위한 ew 포인트.

하나의 문제는 URL 길이입니다. 다른 브라우저에는 다른 제한이 있습니다. 이 작업을 수행해야하며 URL의 길이가 2,000 자에 가까워 문제가 발생할 수 있습니다. 필드 이름이 너무 많은 공간을 차지하면 대신 고정 필드 주문을 사용하십시오. 북마크 할 필요가없는 필드를 남겨 두십시오. 극단적 인 경우 gzip 알고리즘을 사용하여 긴 URL을 압축하는 것을 고려하십시오. 그런 다음 URL에서 합법적 인 문자 만 사용하여 이진 데이터를 base64로 다시 인코딩하십시오. 다음 방문시 URL을 다시 압축하면 CPU 시간이 약간 소요됩니다.

다른 대안은 상태 정보를 파일이나 데이터베이스에 저장하는 것입니다. 그런 다음 해당 정보를 다시 찾는 데 필요한 식별자 만 URL에 저장할 수 있습니다.

관련 문제